Merge pull request #1548 from gwenn/not_owned_interrupt_lock

Prevent interrupt from non-owned connection
This commit is contained in:
gwenn 2024-07-23 19:46:43 +02:00 committed by GitHub
commit c67b7d6b20
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -46,7 +46,7 @@ impl InnerConnection {
pub unsafe fn new(db: *mut ffi::sqlite3, owned: bool) -> InnerConnection {
InnerConnection {
db,
interrupt_lock: Arc::new(Mutex::new(db)),
interrupt_lock: Arc::new(Mutex::new(if owned { db } else { ptr::null_mut() })),
#[cfg(feature = "hooks")]
free_commit_hook: None,
#[cfg(feature = "hooks")]
@ -155,7 +155,7 @@ impl InnerConnection {
self.remove_preupdate_hook();
let mut shared_handle = self.interrupt_lock.lock().unwrap();
assert!(
!shared_handle.is_null(),
!self.owned || !shared_handle.is_null(),
"Bug: Somehow interrupt_lock was cleared before the DB was closed"
);
if !self.owned {