]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/hashtable.h
Main: Removing an already removed event is always safe.
[libucw.git] / ucw / hashtable.h
index 96c41afadb7370da710ca2e0642cac1e5398baad..622f071aa7a663151ab79bc5d3fee36d6268b7cb 100644 (file)
@@ -655,8 +655,9 @@ static int HASH_PREFIX(delete)(TAC HASH_KEY_DECL)
        {
          *bb = b->next;
          P(free)(TTC b);
        {
          *bb = b->next;
          P(free)(TTC b);
+         T.hash_count--;
 #ifndef HASH_TABLE_GROWING
 #ifndef HASH_TABLE_GROWING
-         if (--T.hash_count < T.hash_min)
+         if (T.hash_count < T.hash_min)
            P(rehash)(TTC T.hash_size/2);
 #endif
          return 1;
            P(rehash)(TTC T.hash_size/2);
 #endif
          return 1;
@@ -686,8 +687,9 @@ static void HASH_PREFIX(remove)(TAC HASH_NODE *n)
   ASSERT(b);
   *bb = b->next;
   P(free)(TTC b);
   ASSERT(b);
   *bb = b->next;
   P(free)(TTC b);
+  T.hash_count--;
 #ifndef HASH_TABLE_GROWING
 #ifndef HASH_TABLE_GROWING
-  if (--T.hash_count < T.hash_min)
+  if (T.hash_count < T.hash_min)
     P(rehash)(TTC T.hash_size/2);
 #endif
 }
     P(rehash)(TTC T.hash_size/2);
 #endif
 }