diff options
author | Trumeet <yuuta@yuuta.moe> | 2022-04-03 11:11:08 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2022-04-03 11:11:08 -0700 |
commit | e2d4d73ee5519e32f43735f7c82609914434233e (patch) | |
tree | 3a813cb041a3c181807046994757eaeaeab672a6 | |
parent | af7b3761a568790bdefd2e783a8cd2d66caf0000 (diff) | |
download | ksyxbot-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.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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) { |