fix another size-recalculation mistake in 'PersistentVector.splitRight' function. (When we are splitting in the middle of a BRANCH, we want to subtract the old child size from the remainder, and then add the new child size to the remainder, because this calculation will account for the splitting of preceding elements.)
This commit is contained in:
@@ -450,13 +450,16 @@ struct
|
||||
else
|
||||
let
|
||||
val newChildSize = getFinishIdx child
|
||||
val difference = oldChildSize - newChildSize
|
||||
val sizes = Vector.tabulate (VectorSlice.length sizesSlice + 1,
|
||||
fn i =>
|
||||
if i = 0 then
|
||||
newChildSize
|
||||
else
|
||||
VectorSlice.sub (sizesSlice, i - 1) - difference
|
||||
let
|
||||
val el = VectorSlice.sub (sizesSlice, i - 1)
|
||||
in
|
||||
el - oldChildSize + newChildSize
|
||||
end
|
||||
)
|
||||
|
||||
val child = VectorSlice.full #[child]
|
||||
|
||||
Reference in New Issue
Block a user