about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoy Frostig <rfrostig@mozilla.com>2010-08-25 17:42:36 -0700
committerRoy Frostig <rfrostig@mozilla.com>2010-08-25 17:42:36 -0700
commitc40fed5804f523cc90389941f1a16e5ee956ce5f (patch)
treec4202d7894cfa434c1b4d3fac0a03ff47116a698
parent6b053f24c71237586af7c23613356393149614a2 (diff)
downloadrust-c40fed5804f523cc90389941f1a16e5ee956ce5f.tar.gz
rust-c40fed5804f523cc90389941f1a16e5ee956ce5f.zip
Actually switch to using the bigger hashmap once a it finishes growing and rehashing.
-rw-r--r--src/lib/map.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/map.rs b/src/lib/map.rs
index b6162e02b31..ced31513b63 100644
--- a/src/lib/map.rs
+++ b/src/lib/map.rs
@@ -74,7 +74,7 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] {
   {
     let uint i = 0u;
     while (i < nbkts) {
-      let uint j = (hash[K](hasher, nbkts, key, i));
+      let uint j = hash[K](hasher, nbkts, key, i);
       alt (bkts.(j)) {
         case (some[K, V](k, _)) {
           if (eqer(key, k)) {
@@ -145,10 +145,12 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] {
       let util.rational load = rec(num=(nelts + 1u) as int, den=nbkts as int);
       if (!util.rational_leq(load, lf)) {
         let uint nnewbkts = _uint.next_power_of_two(nbkts + 1u);
-
         let vec[mutable bucket[K, V]] newbkts = make_buckets[K, V](nnewbkts);
         rehash[K, V](hasher, eqer, bkts, nbkts, newbkts, nnewbkts);
+        bkts = newbkts;
+        nbkts = nnewbkts;
       }
+
       if (insert_common[K, V](hasher, eqer, bkts, nbkts, key, val)) {
         nelts += 1u;
         ret true;