Fix sqlite memory leak issue 48/168648/2 accepted/tizen/unified/20180202.060939 submit/tizen/20180131.000626
authorWootak Jung <wootak.jung@samsung.com>
Tue, 30 Jan 2018 05:23:42 +0000 (14:23 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Tue, 30 Jan 2018 05:28:37 +0000 (14:28 +0900)
Change-Id: Ifff9513d0223509c02eff65a47eb48448a08de81

packaging/tel-plugin-database.spec
src/database_main.c

index 748f31a..c4c8d0c 100644 (file)
@@ -1,6 +1,6 @@
 %define major 0
 %define minor 1
-%define patchlevel 37
+%define patchlevel 38
 
 Name:           tel-plugin-database
 Version:        %{major}.%{minor}.%{patchlevel}
index 24ce10f..a96c5ae 100644 (file)
@@ -97,11 +97,16 @@ static gboolean update_query_database(Storage *strg, void *handle, const char *q
 
                        if (rv != SQLITE_OK) {
                                dbg("fail to bind data (%d)", rv);
-                               return FALSE;
+                               break;
                        }
                }
        }
 
+       if (rv != SQLITE_OK) {
+               sqlite3_finalize(stmt);
+               return FALSE;
+       }
+
        rv = sqlite3_step(stmt);
        dbg("update query executed (%d)", rv);
        sqlite3_finalize(stmt);
@@ -149,11 +154,16 @@ static gboolean _read_query_database_internal(Storage *strg, void *handle, const
 
                        if (rv != SQLITE_OK) {
                                dbg("fail to bind data (%d)", rv);
-                               return FALSE;
+                               break;
                        }
                }
        }
 
+       if (rv != SQLITE_OK) {
+               sqlite3_finalize(stmt);
+               return FALSE;
+       }
+
        rv = sqlite3_step(stmt);
        dbg("read query executed (%d), in_order (%d)", rv, in_order);
 
@@ -253,11 +263,16 @@ static gboolean insert_query_database(Storage *strg, void *handle, const char *q
 
                        if (rv != SQLITE_OK) {
                                dbg("fail to bind data (%d)", rv);
-                               return FALSE;
+                               break;
                        }
                }
        }
 
+       if (rv != SQLITE_OK) {
+               sqlite3_finalize(stmt);
+               return FALSE;
+       }
+
        rv = sqlite3_step(stmt);
        dbg("insert query executed (%d)", rv);
        sqlite3_finalize(stmt);
@@ -303,11 +318,16 @@ static gboolean remove_query_database(Storage *strg, void *handle, const char *q
 
                        if (rv != SQLITE_OK) {
                                dbg("fail to bind data (%d)", rv);
-                               return FALSE;
+                               break;
                        }
                }
        }
 
+       if (rv != SQLITE_OK) {
+               sqlite3_finalize(stmt);
+               return FALSE;
+       }
+
        rv = sqlite3_step(stmt);
        dbg("remove query executed (%d)", rv);
        sqlite3_finalize(stmt);