summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqli/mysqli_api.c')
-rw-r--r--ext/mysqli/mysqli_api.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index e37a120a00..070f629b6a 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -384,6 +384,15 @@ PHP_FUNCTION(mysqli_close)
}
MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+
+ /*
+ * Don't free initial struct if there exist
+ * non closed statements
+ */
+ if (mysql->stmts) {
+ mysql->free_me = 0;
+ }
+
mysql_close(mysql);
MYSQLI_CLEAR_RESOURCE(&mysql_link);
RETURN_TRUE;
@@ -1519,7 +1528,7 @@ PHP_FUNCTION(mysqli_stmt_close)
return;
}
MYSQLI_FETCH_RESOURCE(stmt, STMT *, &mysql_stmt, "mysqli_stmt");
-
+ mysql_stmt_close(stmt->stmt);
php_clear_stmt_bind(stmt);
MYSQLI_CLEAR_RESOURCE(&mysql_stmt);
RETURN_TRUE;