You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
_, rm := split(rm) never changes `rm` itself, so `rm != b` wasn't triggered...
But split was still working 99% of the time! How?
The answer is that `changed = true` also wasn't triggered so ascendChange()
thought that Btree didn't change and fell through to the next item, and MOST
of the time Btree returned `rm` again because an item was just inserted before
it which changed the iterator, after which it was removed just fine as fully
contained by the removed range. HOWEVER, as Btree is not guaranteed to resume
iteration correctly after changes, and SOMETIMES it was actually skipping our
item, and it wasn't removed from the list.
Reproducing it in tests is rather hard, but I suppose you'd have to fill the
Btree to some extent.
0 commit comments