chiark / gitweb /
occult ilks: Fix dispose (!)
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Mar 2021 11:28:40 +0000 (11:28 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Mar 2021 11:29:05 +0000 (11:29 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/occultilks.rs

index 81d912b8ea64fe158dd01374e647ab14017ee48c..02c77023a24b52a67b385a618d831398abfe7de3 100644 (file)
@@ -64,8 +64,12 @@ impl OccultIlks {
 
   pub fn dispose(&mut self, id: OId) {
     let id: Id = id.0;
-    let data = self.table.remove(id).unwrap();
-    self.lookup.remove(&data.k);
+    let data = &mut self.table[id];
+    let newrefcount = data.refcount.checked_sub(1).unwrap();
+    if newrefcount == 0 {
+      let data = self.table.remove(id).unwrap();
+      self.lookup.remove(&data.k);
+    }
   }
 }