diff --git a/core/vdbe/execute.rs b/core/vdbe/execute.rs index 41400470c..104484100 100644 --- a/core/vdbe/execute.rs +++ b/core/vdbe/execute.rs @@ -998,7 +998,9 @@ pub fn op_vopen( state .cursors .borrow_mut() - .insert(*cursor_id, Some(Cursor::Virtual(cursor))); + .get_mut(*cursor_id) + .unwrap_or_else(|| panic!("cursor id {} out of bounds", *cursor_id)) + .replace(Cursor::Virtual(cursor)); state.pc += 1; Ok(InsnFunctionStepResult::Step) } diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index f9ce85acd..e5d0cd237 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -349,9 +349,9 @@ impl ProgramState { let cursors = self.cursors.borrow_mut(); std::cell::RefMut::map(cursors, |c| { c.get_mut(cursor_id) - .expect("cursor id out of bounds") + .unwrap_or_else(|| panic!("cursor id {} out of bounds", cursor_id)) .as_mut() - .expect("cursor not allocated") + .unwrap_or_else(|| panic!("cursor id {} is None", cursor_id)) }) } }