diff options
author | Changgyu Choi <changyu.choi@samsung.com> | 2022-01-04 15:40:18 +0900 |
---|---|---|
committer | Changgyu Choi <changyu.choi@samsung.com> | 2022-01-04 18:33:08 +0900 |
commit | e3daceffcc42d7e5267e57b1b5e5d6376b8bf320 (patch) | |
tree | 5c5503abb5215ce9487af06a99a07ea91701290b | |
parent | e8fc660662351270e0317957f90f3144cf808acd (diff) | |
download | shortcut-e3daceffcc42d7e5267e57b1b5e5d6376b8bf320.tar.gz shortcut-e3daceffcc42d7e5267e57b1b5e5d6376b8bf320.tar.bz2 shortcut-e3daceffcc42d7e5267e57b1b5e5d6376b8bf320.zip |
Fix memory leak
Change-Id: Ib8a80616bf858128f54b65740149ad4487fbd5c7
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
-rw-r--r-- | lib/src/shortcut_db.c | 15 |
1 files 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; } |