changeset 200:2e56efaf2464

snapshot: Fix delete() logic.
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 03 Sep 2017 13:16:58 +0200
parents 200eddf9b38d
children 05f50b766e01
files src/snapshot.rs
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/snapshot.rs	Sat Sep 02 19:55:10 2017 +0200
+++ b/src/snapshot.rs	Sun Sep 03 13:16:58 2017 +0200
@@ -40,13 +40,23 @@
     }
 
     pub fn delete(&mut self, ss: Snapshot) {
+        self.map.remove(&ss);
         if self.oldest == ss {
-            self.oldest += 1;
+            self.oldest = self.newest;
+            for (seq, _) in self.map.iter() {
+                if *seq < self.oldest {
+                    self.oldest = *seq;
+                }
+            }
         }
         if self.newest == ss {
-            self.newest -= 1;
+            self.newest = self.oldest;
+            for (seq, _) in self.map.iter() {
+                if *seq > self.newest {
+                    self.newest = *seq;
+                }
+            }
         }
-        self.map.remove(&ss);
     }
 
     pub fn empty(&self) -> bool {