diff --git a/dap_chain_global_db_driver.c b/dap_chain_global_db_driver.c index 822b52347db6210dd8486f841f1dcfc010b07b8d..0ffefe6a1104d27aa5a74846f04d8397a6673516 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 0a9ad3e311ce13940db012729df929fc44b02048..d9f7251a4d3b3d74a315577dc2d9014832abface 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); }