From 2962676a840225537cdf73ed0aaa535d1c86e9ab Mon Sep 17 00:00:00 2001 From: Roman Khlopkov <roman.khlopkov@demlabs.net> Date: Sat, 25 Sep 2021 15:07:58 +0300 Subject: [PATCH] [*] Global DB mem free debug --- modules/global-db/dap_chain_global_db.c | 4 ++-- .../dap_chain_global_db_driver_sqlite.c | 4 ++-- modules/net/dap_chain_node.c | 24 ++++--------------- modules/net/include/dap_chain_node.h | 2 +- 4 files changed, 10 insertions(+), 24 deletions(-) diff --git a/modules/global-db/dap_chain_global_db.c b/modules/global-db/dap_chain_global_db.c index 520886ed77..ae0b6c77d3 100644 --- a/modules/global-db/dap_chain_global_db.c +++ b/modules/global-db/dap_chain_global_db.c @@ -524,7 +524,7 @@ bool dap_chain_global_db_gr_set(char *a_key, void *a_value, size_t a_value_len, // Extract prefix if added successfuly, add history log and call notify callback if present if(!l_res) { // delete info about the deleted entry from the base if one present - global_db_gr_del_del(store_data.key, store_data.group); + global_db_gr_del_del(dap_strdup(store_data.key), store_data.group); dap_global_db_obj_track_history(&store_data); } else { log_it(L_ERROR, "Save error: %d", l_res); @@ -554,7 +554,7 @@ bool dap_chain_global_db_gr_del(char *a_key,const char *a_group) unlock(); if(l_res >= 0) { // add to Del group - global_db_gr_del_add(store_data.key, store_data.group, store_data.timestamp); + global_db_gr_del_add(dap_strdup(store_data.key), store_data.group, store_data.timestamp); } // do not add to history if l_res=1 (already deleted) if (!l_res) { diff --git a/modules/global-db/dap_chain_global_db_driver_sqlite.c b/modules/global-db/dap_chain_global_db_driver_sqlite.c index 1b212fda45..ad09e19b12 100644 --- a/modules/global-db/dap_chain_global_db_driver_sqlite.c +++ b/modules/global-db/dap_chain_global_db_driver_sqlite.c @@ -579,14 +579,12 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) l_table_name, a_store_obj->key, l_blob_hash, a_store_obj->timestamp, l_blob_value); //dap_db_driver_sqlite_free(l_blob_hash); dap_db_driver_sqlite_free(l_blob_value); - DAP_DELETE(a_store_obj->key); } else if (a_store_obj->type == 'd') { //delete one record if (a_store_obj->key) { l_query = sqlite3_mprintf("delete from '%s' where key = '%s'", l_table_name, a_store_obj->key); - DAP_DELETE(a_store_obj->key); } else { // remove all group l_query = sqlite3_mprintf("drop table if exists '%s'", l_table_name); @@ -636,6 +634,8 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) dap_db_driver_sqlite_free(l_error_message); l_ret = -1; } + if (a_store_obj->key) + DAP_DELETE(a_store_obj->key); dap_db_driver_sqlite_free(l_query); DAP_DELETE(l_table_name); return l_ret; diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c index 6df98e3c3c..e06be2f212 100644 --- a/modules/net/dap_chain_node.c +++ b/modules/net/dap_chain_node.c @@ -82,20 +82,10 @@ bool dap_chain_node_check_addr(dap_chain_net_t * a_net,dap_chain_node_addr_t *ad /** * Register alias in base */ -bool dap_chain_node_alias_register(dap_chain_net_t * a_net,const char *alias, dap_chain_node_addr_t *addr) +bool dap_chain_node_alias_register(dap_chain_net_t *a_net, const char *a_alias, dap_chain_node_addr_t *a_addr) { - char *a_key = strdup(alias); - dap_chain_node_addr_t *l_addr = DAP_NEW_Z(dap_chain_node_addr_t); - memcpy(l_addr,addr,sizeof (*l_addr)); -// char a_value[2 * sizeof(dap_chain_node_addr_t) + 1]; -// if(bin2hex(a_value, (const unsigned char *) addr, sizeof(dap_chain_node_addr_t)) == -1) -// return false; -// a_value[2 * sizeof(dap_chain_node_addr_t)] = '\0'; - bool res = dap_chain_global_db_gr_set( dap_strdup(a_key), l_addr, sizeof(dap_chain_node_addr_t) - , a_net->pub.gdb_nodes_aliases); - DAP_DELETE(l_addr); - DAP_DELETE(a_key); - return res; + return dap_chain_global_db_gr_set( dap_strdup(a_alias), DAP_DUP(a_addr), + sizeof(dap_chain_node_addr_t), a_net->pub.gdb_nodes_aliases); } /** @@ -150,12 +140,8 @@ int dap_chain_node_info_save(dap_chain_net_t * a_net, dap_chain_node_info_t *a_n } //char *a_value = dap_chain_node_info_serialize(node_info, NULL); size_t l_node_info_size = dap_chain_node_info_get_size(a_node_info); - dap_chain_node_info_t *l_node_info = DAP_NEW_Z_SIZE(dap_chain_node_info_t, l_node_info_size); - memcpy(l_node_info, a_node_info, sizeof (*a_node_info) ); - bool res = dap_chain_global_db_gr_set( dap_strdup(l_key), l_node_info, l_node_info_size, a_net->pub.gdb_nodes); - DAP_DELETE(l_key); - //DAP_DELETE(a_value); - return res?0:-3; + bool res = dap_chain_global_db_gr_set(l_key, DAP_DUP(a_node_info), l_node_info_size, a_net->pub.gdb_nodes); + return res ? 0 : -3; } /** diff --git a/modules/net/include/dap_chain_node.h b/modules/net/include/dap_chain_node.h index 9d84beabcc..216d6a4261 100644 --- a/modules/net/include/dap_chain_node.h +++ b/modules/net/include/dap_chain_node.h @@ -132,7 +132,7 @@ dap_chain_node_addr_t* dap_chain_node_gen_addr(dap_chain_net_t * l_net,dap_chain bool dap_chain_node_check_addr(dap_chain_net_t * l_net,dap_chain_node_addr_t *addr, dap_chain_cell_id_t *a_cell_id); dap_chain_node_addr_t * dap_chain_node_alias_find(dap_chain_net_t * l_net,const char *alias); -bool dap_chain_node_alias_register(dap_chain_net_t * l_net,const char *alias, dap_chain_node_addr_t *addr); +bool dap_chain_node_alias_register(dap_chain_net_t *a_net, const char *a_alias, dap_chain_node_addr_t *a_addr); bool dap_chain_node_alias_delete(dap_chain_net_t * l_net,const char *alias); int dap_chain_node_info_save(dap_chain_net_t * l_net,dap_chain_node_info_t *node_info); -- GitLab