summaryrefslogtreecommitdiff
path: root/deps/utable
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-11-25 19:23:01 +0800
committeryangwei <[email protected]>2024-11-25 19:23:01 +0800
commitca52d2fbc27e8b45ed44055bfd57f3110fb3f421 (patch)
tree5d9af72af106dd7cfbc51c8487ea2dfcb26382c7 /deps/utable
parentefefab960010412c3bbb769cba05325c6b4ca65e (diff)
🐞 fix(utable): fix memleak in test case
Diffstat (limited to 'deps/utable')
-rw-r--r--deps/utable/test/unit_test_ipfix_exporter.cpp7
-rw-r--r--deps/utable/test/unit_test_utable.cpp4
-rw-r--r--deps/utable/utable.c12
3 files changed, 12 insertions, 11 deletions
diff --git a/deps/utable/test/unit_test_ipfix_exporter.cpp b/deps/utable/test/unit_test_ipfix_exporter.cpp
index e7d22d9..abcb8b7 100644
--- a/deps/utable/test/unit_test_ipfix_exporter.cpp
+++ b/deps/utable/test/unit_test_ipfix_exporter.cpp
@@ -676,15 +676,16 @@ cJSON *ipfix_init_utable_from_log_json(struct utable *table, const char *test_js
cJSON *json_array = cJSON_CreateIntArray((const int *)array, array_sz);
cJSON_Delete(item->child);
- item->type = cJSON_String;
item->child = NULL;
+
+ item->type = cJSON_String;
item->valuestring = cJSON_PrintUnformatted(json_array);
cJSON_Delete(json_array);
free(array);
free(long_array);
}
- if (array_item->type == cJSON_String)
+ else if (array_item->type == cJSON_String)
{
char **array = (char **)malloc(sizeof(char *) * array_sz);
size_t *sz_value = (size_t *)malloc(sizeof(size_t) * array_sz);
@@ -698,7 +699,7 @@ cJSON *ipfix_init_utable_from_log_json(struct utable *table, const char *test_js
}
}
utable_add_cstring_array(table, item->string, (const char **)array, sz_value, array_sz);
-
+ free(sz_value);
cJSON *json_array = cJSON_CreateStringArray((const char **)array, array_sz);
item->valuestring = cJSON_PrintUnformatted(json_array);
item->type = cJSON_String;
diff --git a/deps/utable/test/unit_test_utable.cpp b/deps/utable/test/unit_test_utable.cpp
index 0015f83..f1d4b87 100644
--- a/deps/utable/test/unit_test_utable.cpp
+++ b/deps/utable/test/unit_test_utable.cpp
@@ -601,7 +601,7 @@ TEST(utable_test, replace_8k_cstring)
utable_free(table);
}
-TEST(utable_test, replace_cstring_many_times)
+TEST(utable_test, replace_cstring_1w_times)
{
struct utable *table = utable_new();
@@ -614,7 +614,7 @@ TEST(utable_test, replace_cstring_many_times)
test_utable_assert_str(table, "key1", str);
- for(int i=0; i<100000; i++)
+ for(int i=0; i<10000; i++)
{
utable_delete(table, "key1", strlen("key1"));
utable_add_cstring(table, "key1", str, strlen(str));
diff --git a/deps/utable/utable.c b/deps/utable/utable.c
index 3abfc0e..fe3c429 100644
--- a/deps/utable/utable.c
+++ b/deps/utable/utable.c
@@ -347,7 +347,7 @@ void utable_add_cstring(struct utable *table, const char *key, const char *value
return;
}
item = MEMPOOL_ALLOC(table->mempool ,1,struct utable_item);
- item->kv= utable_kv_new_with_cstring(key, key_sz, value, value_sz);
+ item->kv= utable_kv_new_with_cstring_from_mempool(table->mempool, key, key_sz, value, value_sz);
HASH_ADD_KEYPTR(hh, table->items, item->kv->key, item->kv->key_sz, item);
utable_item_stat_add(&table->stat, item->kv);
}
@@ -363,7 +363,7 @@ void utable_add_blob(struct utable *table, const char *key, const char *blob, si
return;
}
item = MEMPOOL_ALLOC(table->mempool ,1, struct utable_item);
- item->kv = utable_kv_new_with_blob(key, key_sz, blob, blob_sz);
+ item->kv = utable_kv_new_with_blob_from_mempool(table->mempool, key, key_sz, blob, blob_sz);
HASH_ADD_KEYPTR(hh, table->items, item->kv->key, item->kv->key_sz, item);
utable_item_stat_add(&table->stat, item->kv);
@@ -380,7 +380,7 @@ void utable_add_integer(struct utable *table, const char *key, int64_t value)
return;
}
item = MEMPOOL_ALLOC(table->mempool ,1, struct utable_item);
- item->kv = utable_kv_new_with_integer(key, key_sz, value);
+ item->kv = utable_kv_new_with_integer_from_mempool(table->mempool, key, key_sz, value);
HASH_ADD_KEYPTR(hh, table->items, item->kv->key, item->kv->key_sz, item);
utable_item_stat_add(&table->stat, item->kv);
@@ -397,7 +397,7 @@ void utable_add_integer_array(struct utable *table, const char *key, int64_t val
return;
}
item = MEMPOOL_ALLOC(table->mempool ,1, struct utable_item);
- item->kv = utable_kv_new_with_integer_array(key, key_sz, value_array, n_value);
+ item->kv = utable_kv_new_with_integer_array_from_mempool(table->mempool, key, key_sz, value_array, n_value);
HASH_ADD_KEYPTR(hh, table->items, item->kv->key, item->kv->key_sz, item);
utable_item_stat_add(&table->stat, item->kv);
@@ -414,7 +414,7 @@ void utable_add_cstring_array(struct utable *table, const char *key, const char*
return;
}
item = MEMPOOL_ALLOC(table->mempool ,1, struct utable_item);
- item->kv = utable_kv_new_with_cstring_array(key, key_sz, value_array, value_sz, n_value);
+ item->kv = utable_kv_new_with_cstring_array_from_mempool(table->mempool, key, key_sz, value_array, value_sz, n_value);
HASH_ADD_KEYPTR(hh, table->items, item->kv->key, item->kv->key_sz, item);
utable_item_stat_add(&table->stat, item->kv);
@@ -427,7 +427,7 @@ void utable_delete(struct utable *table, const char *key, size_t key_sz)
if (item) {
HASH_DEL(table->items, item);
utable_item_stat_sub(&table->stat, item->kv);
- utable_kv_free(item->kv);
+ utable_kv_free_from_pool(table->mempool, item->kv);
MEMPOOL_FREE(table->mempool,item);
}
}