summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2022-04-03 11:11:08 -0700
committerTrumeet <yuuta@yuuta.moe>2022-04-03 11:11:08 -0700
commite2d4d73ee5519e32f43735f7c82609914434233e (patch)
tree3a813cb041a3c181807046994757eaeaeab672a6
parentaf7b3761a568790bdefd2e783a8cd2d66caf0000 (diff)
downloadksyxbot-e2d4d73ee5519e32f43735f7c82609914434233e.tar
ksyxbot-e2d4d73ee5519e32f43735f7c82609914434233e.tar.gz
ksyxbot-e2d4d73ee5519e32f43735f7c82609914434233e.tar.bz2
ksyxbot-e2d4d73ee5519e32f43735f7c82609914434233e.zip
Fix memory leak when prepare statement returns a failure
-rw-r--r--store.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/store.c b/store.c
index 379d2e2..3a45400 100644
--- a/store.c
+++ b/store.c
@@ -33,7 +33,7 @@ static void cb_link(bool successful, struct TdObject *result, struct TdError *er
LOGDV("%s", s->text);
struct TdMessageLink *link = (struct TdMessageLink *) result;
int r;
- sqlite3_stmt *stmt;
+ sqlite3_stmt *stmt = NULL;
if ((r = sqlite3_prepare_v2(db,
"INSERT INTO says(t, url, msg) VALUES(?, ?, ?)",
-1,
@@ -42,6 +42,7 @@ static void cb_link(bool successful, struct TdObject *result, struct TdError *er
goto sql_err;
sql_err:
LOGEV("Cannot insert: %s.", sqlite3_errstr(r));
+ if (stmt) sqlite3_finalize(stmt);
goto f;
}
if ((r = sqlite3_bind_text(stmt, 1, s->text, (int) strlen(s->text), NULL))) {
@@ -55,6 +56,7 @@ static void cb_link(bool successful, struct TdObject *result, struct TdError *er
}
r = sqlite3_step(stmt);
sqlite3_finalize(stmt);
+ stmt = NULL;
if (r != SQLITE_DONE && r != SQLITE_CONSTRAINT) {
goto sql_err;
} else if (r == SQLITE_CONSTRAINT) {