X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e195a28b546de45d49c8ab08f18da1da136a2454..a1077f2304c8e738c23855e33422182f4aca6d2e:/src/xbt/dict.cpp diff --git a/src/xbt/dict.cpp b/src/xbt/dict.cpp index 8dadf6bba8..ccc2d35568 100644 --- a/src/xbt/dict.cpp +++ b/src/xbt/dict.cpp @@ -72,20 +72,15 @@ xbt_dict_t xbt_dict_new_homogeneous(void_f_pvoid_t free_ctn) */ void xbt_dict_free(xbt_dict_t * dict) { - xbt_dictelm_t current; - xbt_dictelm_t previous; - int table_size; - xbt_dictelm_t *table; - - // if ( *dict ) xbt_dict_dump_sizes(*dict); - if (dict != nullptr && *dict != nullptr) { - table_size = (*dict)->table_size; - table = (*dict)->table; + int table_size = (*dict)->table_size; + xbt_dictelm_t* table = (*dict)->table; /* Warning: the size of the table is 'table_size+1'... * This is because table_size is used as a binary mask in xbt_dict_rehash */ for (int i = 0; (*dict)->count && i <= table_size; i++) { - current = table[i]; + xbt_dictelm_t current = table[i]; + xbt_dictelm_t previous; + while (current != nullptr) { previous = current; current = current->next; @@ -119,7 +114,7 @@ static void xbt_dict_rehash(xbt_dict_t dict) XBT_DEBUG("REHASH (%d->%d)", oldsize, newsize); for (unsigned i = 0; i < oldsize; i++, currcell++) { - if (!*currcell) /* empty cell */ + if (*currcell == nullptr) /* empty cell */ continue; xbt_dictelm_t *twincell = currcell + oldsize; @@ -132,7 +127,7 @@ static void xbt_dict_rehash(xbt_dict_t dict) if ((bucklet->hash_code & newsize) != i) { /* Move to b */ *pprev = bucklet->next; bucklet->next = *twincell; - if (!*twincell) + if (*twincell == nullptr) dict->fill++; *twincell = bucklet; } else { @@ -140,7 +135,7 @@ static void xbt_dict_rehash(xbt_dict_t dict) } } - if (!*currcell) /* everything moved */ + if (*currcell == nullptr) /* everything moved */ dict->fill--; } } @@ -938,7 +933,6 @@ XBT_TEST_UNIT("crash", test_dict_crash, "Crash test") xbt_dict_t head = xbt_dict_new_homogeneous(&free); xbt_test_add("Fill %d elements, with keys being the number of element", NB_ELM); for (int j = 0; j < NB_ELM; j++) { - /* if (!(j%1000)) { printf("."); fflush(stdout); } */ char* key = (char*)xbt_malloc(10); snprintf(key,10, "%d", j); @@ -966,7 +960,6 @@ XBT_TEST_UNIT("crash", test_dict_crash, "Crash test") xbt_test_add("Remove my %d elements", NB_ELM); key = (char*) xbt_malloc(10); for (int j = 0; j < NB_ELM; j++) { - /* if (!(j%10000)) printf("."); fflush(stdout); */ snprintf(key,10, "%d", j); xbt_dict_remove(head, key); }