From e3daceffcc42d7e5267e57b1b5e5d6376b8bf320 Mon Sep 17 00:00:00 2001 From: Changgyu Choi Date: Tue, 4 Jan 2022 15:40:18 +0900 Subject: [PATCH 1/1] Fix memory leak Change-Id: Ib8a80616bf858128f54b65740149ad4487fbd5c7 Signed-off-by: Changgyu Choi --- lib/src/shortcut_db.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/src/shortcut_db.c b/lib/src/shortcut_db.c index ea1cc3c..5790e54 100644 --- a/lib/src/shortcut_db.c +++ b/lib/src/shortcut_db.c @@ -71,17 +71,16 @@ static int __check_integrity_cb(void *pid, int argc, char **argv, char **notUsed /* LCOV_EXCL_STOP */ /* LCOV_EXCL_START */ -static int __recover_corrupted_db(sqlite3 *db) +static int __recover_corrupted_db() { int ret = SHORTCUT_ERROR_NONE; int sql_ret; char *errmsg = NULL; + sqlite3 *db = NULL; SHORTCUT_INFO("DB is corrupted, start to recover corrupted db"); - if (db) - sqlite3_close(db); - unlink(_db_path); + unlink(_db_path); sql_ret = sqlite3_open_v2(_db_path, &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL); @@ -101,6 +100,8 @@ static int __recover_corrupted_db(sqlite3 *db) out: if (errmsg) sqlite3_free(errmsg); + if (db) + sqlite3_close_v2(db); return ret; } @@ -138,12 +139,12 @@ EAPI int shortcut_db_init(void) } out: - if (sql_ret == SQLITE_CORRUPT || sql_ret == SQLITE_NOTADB || is_db_corrupted) - ret = __recover_corrupted_db(db); if (errmsg) sqlite3_free(errmsg); if (db) - sqlite3_close(db); + sqlite3_close_v2(db); + if (sql_ret == SQLITE_CORRUPT || sql_ret == SQLITE_NOTADB || is_db_corrupted) + ret = __recover_corrupted_db(); return ret; } -- 2.7.4