From 2d541fb275fe4512bed664b74a729b32d49a69a2 Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Mon, 15 Aug 2016 21:48:34 +0000 Subject: [PATCH] Fixing two memory leaks These are 2 memory leaks related to prepared statements * Resultset (MySQL_ResultSet() not deallocated * mysql_stmt_free_result() is now correctly called --- lib/MySQL_Session.cpp | 1 + lib/mysql_connection.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 596b179b2..931254f27 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -2713,6 +2713,7 @@ void MySQL_Session::MySQL_Stmt_Result_to_MySQL_wire(MYSQL_STMT *stmt, MySQL_Conn if (stmt_result) { MySQL_ResultSet *MyRS=new MySQL_ResultSet(&client_myds->myprot, stmt_result, stmt->mysql, stmt); bool resultset_completed=MyRS->get_resultset(client_myds->PSarrayOUT); + delete MyRS; } else { MYSQL *mysql=stmt->mysql; // no result set diff --git a/lib/mysql_connection.cpp b/lib/mysql_connection.cpp index eac6e11fc..4d018bf65 100644 --- a/lib/mysql_connection.cpp +++ b/lib/mysql_connection.cpp @@ -1337,11 +1337,11 @@ void MySQL_Connection::async_free_result() { query.stmt_result=NULL; } if (query.stmt) { + mysql_stmt_free_result(query.stmt); } if (mysql_result) { mysql_free_result(mysql_result); mysql_result=NULL; - mysql_stmt_free_result(query.stmt); } async_state_machine=ASYNC_IDLE; if (MyRS) {