summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mysqli/mysqli.c2
-rw-r--r--ext/mysqli/mysqli_api.c11
2 files changed, 8 insertions, 5 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 011896050a..5e0a5ebc10 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -125,7 +125,7 @@ void php_clear_stmt_bind(MY_STMT *stmt)
/* {{{ php_clear_mysql */
void php_clear_mysql(MY_MYSQL *mysql) {
if (mysql->li_read) {
- zval_dtor(mysql->li_read);
+ zval_ptr_dtor(&(mysql->li_read));
mysql->li_read = NULL;
}
}
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index 378514834d..32b57ecf43 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -1170,7 +1170,7 @@ PHP_FUNCTION(mysqli_set_local_infile_default)
MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql->li_read) {
- zval_dtor(mysql->li_read);
+ zval_ptr_dtor(&(mysql->li_read));
mysql->li_read = NULL;
}
}
@@ -1198,11 +1198,14 @@ PHP_FUNCTION(mysqli_set_local_infile_handler)
efree(callback_name);
RETURN_FALSE;
}
- efree(callback_name);
/* save callback function */
- ALLOC_ZVAL(mysql->li_read);
- ZVAL_STRING(mysql->li_read, callback_func->value.str.val, 1);
+ if (!mysql->li_read) {
+ MAKE_STD_ZVAL(mysql->li_read);
+ } else {
+ zval_dtor(mysql->li_read);
+ }
+ ZVAL_STRING(mysql->li_read, callback_name, 0);
RETURN_TRUE;
}