From 7965e006b99ac7bd2e13c6c62f32fa4ece86d156 Mon Sep 17 00:00:00 2001 From: webbrain-one <295484252+webbrain-one@users.noreply.github.com> Date: Wed, 19 Aug 2026 18:56:41 +0300 Subject: [PATCH] Fix sqlite statement memory leak Finalize existing statements in prepare() and close() so repeated inserts do not leak prepared statement resources. --- smartdb/database.hpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/smartdb/database.hpp b/smartdb/database.hpp index f195004..c464566 100644 --- a/smartdb/database.hpp +++ b/smartdb/database.hpp @@ -45,7 +45,11 @@ class database return true; } - sqlite3_finalize(statement_); + if (statement_) + { + sqlite3_finalize(statement_); + statement_ = nullptr; + } code_ = close_db_handle(); statement_ = nullptr; db_handle_ = nullptr; @@ -98,6 +102,11 @@ class database bool prepare(const std::string& sql) { + if (statement_) + { + sqlite3_finalize(statement_); + statement_ = nullptr; + } code_ = sqlite3_prepare_v2(db_handle_, sql.c_str(), -1, &statement_, nullptr); return code_ == SQLITE_OK; }