about summary refs log tree commit diff
path: root/src/libstd/bitv.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-02-04 22:39:53 -0800
committerbors <bors@rust-lang.org>2013-02-04 22:39:53 -0800
commit80cd485b494556c6bcdc3793acfa52bcd8faab8d (patch)
tree78900c53baacef8d43019c0dd0e09adb7655c082 /src/libstd/bitv.rs
parent52817092a937738bc437800018cf202bb826d712 (diff)
parent406a73fde27ac2352789ced88dad7e72e0e0d2e9 (diff)
downloadrust-80cd485b494556c6bcdc3793acfa52bcd8faab8d.tar.gz
rust-80cd485b494556c6bcdc3793acfa52bcd8faab8d.zip
auto merge of #4784 : alexcrichton/rust/bitv-clear-fix, r=graydon
I think that the inversion of `op(&mut w)` may have just been a mistake?
Diffstat (limited to 'src/libstd/bitv.rs')
-rw-r--r--src/libstd/bitv.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/libstd/bitv.rs b/src/libstd/bitv.rs
index d49c2ef95f6..244d388bffe 100644
--- a/src/libstd/bitv.rs
+++ b/src/libstd/bitv.rs
@@ -156,7 +156,7 @@ impl BigBitv {
      fn each_storage(op: fn(v: &mut uint) -> bool) {
         for uint::range(0, self.storage.len()) |i| {
             let mut w = self.storage[i];
-            let b = !op(&mut w);
+            let b = op(&mut w);
             self.storage[i] = w;
             if !b { break; }
         }
@@ -981,6 +981,24 @@ mod tests {
       assert !b1[40];
       assert !b1[80];
     }
+
+    #[test]
+    pub fn test_small_clear() {
+      let b = Bitv(14, true);
+      b.clear();
+      for b.ones |i| {
+          die!(fmt!("found 1 at %?", i));
+      }
+    }
+
+    #[test]
+    pub fn test_big_clear() {
+      let b = Bitv(140, true);
+      b.clear();
+      for b.ones |i| {
+          die!(fmt!("found 1 at %?", i));
+      }
+    }
 }
 
 //