From 65d6f4ffe90465fa66bd15cfcfc124a21f0050a5 Mon Sep 17 00:00:00 2001 From: Zixuan Chen Date: Sat, 22 Oct 2022 11:05:47 +0800 Subject: [PATCH] fix: cursor should be invalidated --- crates/loro-core/src/container/text/tracker/effects_iter.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/loro-core/src/container/text/tracker/effects_iter.rs b/crates/loro-core/src/container/text/tracker/effects_iter.rs index 41dc56d0..0a192a7e 100644 --- a/crates/loro-core/src/container/text/tracker/effects_iter.rs +++ b/crates/loro-core/src/container/text/tracker/effects_iter.rs @@ -96,14 +96,15 @@ impl<'a> Iterator for EffectIter<'a> { id.counter, id.counter + cursor.len as Counter, ); + // SAFETY: cursor is valid here + let content = unsafe { cursor.get_sliced().slice }; let changed = self .tracker .update_cursors(smallvec![cursor], StatusChange::SetAsCurrent); assert_eq!(changed as usize, span.len()); return Some(Effect::Ins { pos: index, - // SAFETY: cursor is valid - content: unsafe { cursor.get_sliced().slice }, + content, }); } FirstCursorResult::Del(id, del) => {