Jelajahi Sumber

htable: use mode everywhere to control the locks for add operation

Daniel-Constantin Mierla 11 tahun lalu
induk
melakukan
c7ff8a88e7
1 mengubah file dengan 3 tambahan dan 3 penghapusan
  1. 3 3
      modules/htable/ht_api.c

+ 3 - 3
modules/htable/ht_api.c

@@ -606,7 +606,7 @@ ht_cell_t* ht_cell_value_add(ht_t *ht, str *name, int val, int mode,
 					if(it->next)
 						it->next->prev = it->prev;
 					ht->entries[idx].esize--;
-					lock_release(&ht->entries[idx].lock);
+					if(mode) lock_release(&ht->entries[idx].lock);
 					ht_cell_free(it);
 					return NULL;
 				}
@@ -625,7 +625,7 @@ ht_cell_t* ht_cell_value_add(ht_t *ht, str *name, int val, int mode,
 					if(old->msize>=it->msize)
 					{
 						memcpy(old, it, it->msize);
-						lock_release(&ht->entries[idx].lock);
+						if(mode) lock_release(&ht->entries[idx].lock);
 						return old;
 					}
 				}
@@ -673,7 +673,7 @@ ht_cell_t* ht_cell_value_add(ht_t *ht, str *name, int val, int mode,
 		if(old->msize>=it->msize)
 		{
 			memcpy(old, it, it->msize);
-			lock_release(&ht->entries[idx].lock);
+			if(mode) lock_release(&ht->entries[idx].lock);
 			return old;
 		}
 	}