From ac80a7f4377d31dcdf9d64860704b60f58e1a759 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=D0=B5x=D0=B0nder=20Lysik=D0=BEv?=
 <alexander.lysikov@demlabs.net>
Date: Thu, 13 Jun 2019 23:37:00 +0500
Subject: [PATCH] fixed a few memory leaks

---
 dap_chain_global_db_driver.c        | 13 ++++++++-----
 dap_chain_global_db_driver_sqlite.c |  1 +
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/dap_chain_global_db_driver.c b/dap_chain_global_db_driver.c
index 822b523..0ffefe6 100755
--- a/dap_chain_global_db_driver.c
+++ b/dap_chain_global_db_driver.c
@@ -137,7 +137,10 @@ void dap_db_driver_deinit(void)
     // deinit driver
     if(s_drv_callback.deinit)
         s_drv_callback.deinit();
-
+    if(s_used_driver){
+        DAP_DELETE(s_used_driver);
+        s_used_driver = NULL;
+    }
 }
 
 dap_store_obj_t* dap_store_obj_copy(dap_store_obj_t *a_store_obj, size_t a_store_count)
@@ -478,13 +481,13 @@ int dap_chain_global_db_driver_appy(pdap_store_obj_t a_store_obj, size_t a_store
 
     if(s_drv_callback.apply_store_obj)
         for(size_t i = 0; i < a_store_count; i++) {
-            dap_store_obj_t *l_obj = dap_store_obj_copy(a_store_obj + i, 1);
-            assert(l_obj);
-            if(!s_drv_callback.apply_store_obj(a_store_obj)) {
+            dap_store_obj_t *l_store_obj_cur = a_store_obj + i;
+            assert(l_store_obj_cur);
+            if(!s_drv_callback.apply_store_obj(l_store_obj_cur)) {
                 //log_it(L_INFO, "Write item Ok %s/%s\n", l_obj->group, l_obj->key);
             }
             else {
-                log_it(L_ERROR, "Can't write item %s/%s\n", l_obj->group, l_obj->key);
+                log_it(L_ERROR, "Can't write item %s/%s\n", l_store_obj_cur->group, l_store_obj_cur->key);
                 l_ret -= 1;
             }
         }
diff --git a/dap_chain_global_db_driver_sqlite.c b/dap_chain_global_db_driver_sqlite.c
index 0a9ad3e..d9f7251 100755
--- a/dap_chain_global_db_driver_sqlite.c
+++ b/dap_chain_global_db_driver_sqlite.c
@@ -144,6 +144,7 @@ sqlite3* dap_db_driver_sqlite_open(const char *a_filename_utf8, int a_flags, cha
     int l_rc = sqlite3_open_v2(a_filename_utf8, &l_db, a_flags | SQLITE_OPEN_FULLMUTEX, NULL);
     // if unable to open the database file
     if(l_rc == SQLITE_CANTOPEN) {
+        sqlite3_close(l_db);
         // try to create database
         l_rc = sqlite3_open_v2(a_filename_utf8, &l_db, a_flags | SQLITE_OPEN_FULLMUTEX | SQLITE_OPEN_CREATE, NULL);
     }
-- 
GitLab