ssb: Free sqlite3_exec errors.

This commit is contained in:
Cory McWilliams 2025-06-07 10:36:44 -04:00
parent 2a53892581
commit dc9a279991
2 changed files with 22 additions and 3 deletions

View File

@ -31,6 +31,10 @@ static int _tf_ssb_db_try_exec(sqlite3* db, const char* statement)
{ {
tf_printf("Error running '%s': %s.\n", statement, error ? error : sqlite3_errmsg(db)); tf_printf("Error running '%s': %s.\n", statement, error ? error : sqlite3_errmsg(db));
} }
if (error)
{
sqlite3_free(error);
}
return result; return result;
} }
@ -41,6 +45,13 @@ static void _tf_ssb_db_exec(sqlite3* db, const char* statement)
if (result != SQLITE_OK) if (result != SQLITE_OK)
{ {
tf_printf("Error running '%s': %s.\n", statement, error ? error : sqlite3_errmsg(db)); tf_printf("Error running '%s': %s.\n", statement, error ? error : sqlite3_errmsg(db));
}
if (error)
{
sqlite3_free(error);
}
if (result != SQLITE_OK)
{
abort(); abort();
} }
} }

View File

@ -279,10 +279,14 @@ static void _tf_ssb_swap_with_server_identity_work(tf_ssb_t* ssb, void* user_dat
sqlite3_bind_text(statement, 2, work->user, -1, NULL) == SQLITE_OK && sqlite3_bind_text(statement, 3, work->id, -1, NULL) == SQLITE_OK && sqlite3_bind_text(statement, 2, work->user, -1, NULL) == SQLITE_OK && sqlite3_bind_text(statement, 3, work->id, -1, NULL) == SQLITE_OK &&
sqlite3_step(statement) == SQLITE_DONE && sqlite3_changes(db) == 1) sqlite3_step(statement) == SQLITE_DONE && sqlite3_changes(db) == 1)
{ {
error = NULL; char* commit_error = NULL;
if (sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, &error) != SQLITE_OK) if (sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, &commit_error) != SQLITE_OK)
{ {
work->error = error ? tf_strdup(error) : tf_strdup(sqlite3_errmsg(db)); work->error = commit_error ? tf_strdup(commit_error) : tf_strdup(sqlite3_errmsg(db));
}
if (commit_error)
{
sqlite3_free(commit_error);
} }
} }
else else
@ -300,6 +304,10 @@ static void _tf_ssb_swap_with_server_identity_work(tf_ssb_t* ssb, void* user_dat
{ {
work->error = error ? tf_strdup(error) : tf_strdup(sqlite3_errmsg(db)); work->error = error ? tf_strdup(error) : tf_strdup(sqlite3_errmsg(db));
} }
if (error)
{
sqlite3_free(error);
}
} }
else else
{ {