summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChanggyu Choi <changyu.choi@samsung.com>2022-01-04 15:40:18 +0900
committerChanggyu Choi <changyu.choi@samsung.com>2022-01-04 18:33:08 +0900
commite3daceffcc42d7e5267e57b1b5e5d6376b8bf320 (patch)
tree5c5503abb5215ce9487af06a99a07ea91701290b
parente8fc660662351270e0317957f90f3144cf808acd (diff)
downloadshortcut-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.c15
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;
}