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