Fix memory leak 43/258043/5
authorIlho Kim <ilho159.kim@samsung.com>
Mon, 10 May 2021 02:16:29 +0000 (11:16 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Fri, 28 May 2021 06:47:13 +0000 (06:47 +0000)
- There is need to free the list as well as elements
- Free the used list

Change-Id: I0b0c3d98e49d368e58ffbe34fd4f3bfd5905ff41
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/common/database/abstract_db_handler.cc
src/common/database/query_handler.cc

index aad27e8..80c1546 100644 (file)
@@ -232,7 +232,7 @@ AbstractDBHandler::AbstractDBHandler(uid_t uid, int pid) {
 
 AbstractDBHandler::~AbstractDBHandler() {
   for (auto db_handle : db_handle_list_)
-    sqlite3_close(db_handle.first);
+    sqlite3_close_v2(db_handle.first);
 }
 
 std::vector<std::pair<std::string, uid_t>> AbstractDBHandler::GetDBPath() {
index 9f14ac2..a635459 100644 (file)
@@ -182,7 +182,7 @@ class QueryMaker {
 
 QueryMaker __query_maker;
 
-void __free_argument(gpointer data, gpointer user_data) {
+void __free_argument(gpointer data) {
   query_args* args = (query_args*)data;
   g_list_free(args->argument);
   free(args);
@@ -190,7 +190,7 @@ void __free_argument(gpointer data, gpointer user_data) {
 
 void __free_query_list(GList* queries, GList* args_list) {
   g_list_free(queries);
-  g_list_foreach(args_list, __free_argument, NULL);
+  g_list_free_full(args_list, __free_argument);
 }
 
 }  // namespace
@@ -273,6 +273,8 @@ int QueryHandler::Execute() {
         }
         result_.emplace_back(std::move(vt));
       }
+
+      g_list_free_full(list, free);
     }
     __free_query_list(queries, args_list);