[PATCH] rust-cpython: add sanity check to PySharedState::decrease_leak_count()
Yuya Nishihara
yuya at tcha.org
Sun Sep 15 16:29:51 UTC 2019
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1568555012 -32400
# Sun Sep 15 22:43:32 2019 +0900
# Node ID 071b35e3f7cde53cbf411a536091153741dc4a37
# Parent 34ed651ba7e4a4b7f0ee79c5a5442b5eed27bbad
rust-cpython: add sanity check to PySharedState::decrease_leak_count()
If decrease_leak_count() were called unnecessarily, there must be a serious
bug. It's better to not silently ignore such cases.
diff --git a/rust/hg-cpython/src/ref_sharing.rs b/rust/hg-cpython/src/ref_sharing.rs
--- a/rust/hg-cpython/src/ref_sharing.rs
+++ b/rust/hg-cpython/src/ref_sharing.rs
@@ -85,10 +85,14 @@ impl PySharedState {
/// It's unsafe to update the reference count without knowing the
/// reference is deleted. Do not call this function directly.
pub unsafe fn decrease_leak_count(&self, _py: Python, mutable: bool) {
- self.leak_count
- .replace(self.leak_count.get().saturating_sub(1));
if mutable {
+ assert_eq!(self.leak_count.get(), 0);
+ assert!(self.mutably_borrowed.get());
self.mutably_borrowed.replace(false);
+ } else {
+ let count = self.leak_count.get();
+ assert!(count > 0);
+ self.leak_count.replace(count - 1);
}
}
}
More information about the Mercurial-devel
mailing list