[tracker] libtracker-fts: Ensure a sqlite3_stmt is finalized on FTS5 failure paths



commit 53bbc6f988ead8e0eee1bcd59d6311f67dc2dd61
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Nov 6 16:57:43 2016 +0100

    libtracker-fts: Ensure a sqlite3_stmt is finalized on FTS5 failure paths
    
    It is an error condition if no FTS5 API is found, it's no excuse to leave
    the sqlite3_stmt unfinalized though.

 src/libtracker-fts/tracker-fts-tokenizer.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-fts/tracker-fts-tokenizer.c b/src/libtracker-fts/tracker-fts-tokenizer.c
index e055029..f6c05ed 100644
--- a/src/libtracker-fts/tracker-fts-tokenizer.c
+++ b/src/libtracker-fts/tracker-fts-tokenizer.c
@@ -371,20 +371,17 @@ static fts5_api *
 get_fts5_api (sqlite3 *db) {
        int rc = SQLITE_OK;
        sqlite3_stmt *stmt;
-       fts5_api *api;
+       fts5_api *api = NULL;
 
        rc = sqlite3_prepare_v2(db, "SELECT fts5()",
                                -1, &stmt, 0);
 
-       if (rc != SQLITE_OK) {
+       if (rc != SQLITE_OK)
                return NULL;
-       }
 
-       if (sqlite3_step (stmt) != SQLITE_ROW) {
-               return NULL;
-       }
+       if (sqlite3_step (stmt) == SQLITE_ROW)
+               memcpy (&api, sqlite3_column_blob (stmt, 0), sizeof (api));
 
-       memcpy (&api, sqlite3_column_blob (stmt, 0), sizeof (api));
        sqlite3_finalize (stmt);
 
        return api;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]