ep: Fix panic when merging events from different buffers (#49097)

Oleksiy Syvokon created

Release Notes:

- N/A

Change summary

crates/edit_prediction/src/edit_prediction.rs | 9 +++++++++
1 file changed, 9 insertions(+)

Detailed changes

crates/edit_prediction/src/edit_prediction.rs 🔗

@@ -244,6 +244,9 @@ impl StoredEvent {
         if self.old_snapshot.remote_id() != next_old_event.old_snapshot.remote_id() {
             return false;
         }
+        if self.old_snapshot.remote_id() != new_snapshot.remote_id() {
+            return false;
+        }
 
         let a_is_predicted = matches!(
             self.event.as_ref(),
@@ -2275,6 +2278,12 @@ fn merge_trailing_events_if_needed(
     latest_snapshot: &TextBufferSnapshot,
     latest_edit_range: &Range<Anchor>,
 ) {
+    if let Some(last_event) = events.back() {
+        if last_event.old_snapshot.remote_id() != latest_snapshot.remote_id() {
+            return;
+        }
+    }
+
     let mut next_old_event = None;
     let mut mergeable_count = 0;
     for old_event in events.iter().rev() {