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