From c2df6528b00385e191ddf6fec9553cf0b3aeba14 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Wed, 15 Apr 2026 15:52:44 +0100 Subject: [PATCH 1/2] Fix close_on_server --- ext/mysqlnd/mysqlnd_ps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index b9b1121615701..3758fdad9d0d8 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -1795,7 +1795,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server)(MYSQLND_STMT * const s, bo ret = conn->command->stmt_close(conn, stmt_id); if (ret == FAIL) { COPY_CLIENT_ERROR(stmt->error_info, *conn->error_info); - DBG_RETURN(FAIL); + /* Don't return early - continue with cleanup to prevent memory leaks */ } } } From 744ec0545c07a494a7ce150017363dec38f24925 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Wed, 15 Apr 2026 18:19:10 +0100 Subject: [PATCH 2/2] Fix DBG_RETURN --- ext/mysqlnd/mysqlnd_ps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 3758fdad9d0d8..16116bb52f234 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -1752,6 +1752,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server)(MYSQLND_STMT * const s, bo MYSQLND_STMT_DATA * stmt = s? s->data : NULL; MYSQLND_CONN_DATA * conn = stmt? stmt->conn : NULL; enum_mysqlnd_collected_stats statistic = STAT_LAST; + enum_func_status ret = PASS; DBG_ENTER("mysqlnd_stmt::close_on_server"); if (!stmt || !conn) { @@ -1789,7 +1790,6 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server)(MYSQLND_STMT * const s, bo STAT_FREE_RESULT_EXPLICIT); if (GET_CONNECTION_STATE(&conn->state) == CONN_READY) { - enum_func_status ret = FAIL; const size_t stmt_id = stmt->stmt_id; ret = conn->command->stmt_close(conn, stmt_id); @@ -1825,7 +1825,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_stmt, close_on_server)(MYSQLND_STMT * const s, bo stmt->conn = NULL; } - DBG_RETURN(PASS); + DBG_RETURN(ret); } /* }}} */