diff options
-rw-r--r-- | ext/mysqli/php_mysqli_structs.h | 1 | ||||
-rw-r--r-- | ext/mysqli/tests/bug63486.phpt | 55 |
2 files changed, 56 insertions, 0 deletions
diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index 055765197d..6fe8249426 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -314,6 +314,7 @@ extern PHPAPI zend_class_entry *spl_ce_RuntimeException; mysqli_object *intern = Z_MYSQLI_P(__id); \ efree(intern->ptr); \ intern->ptr = NULL; \ + ZVAL_NULL(*__id); \ } diff --git a/ext/mysqli/tests/bug63486.phpt b/ext/mysqli/tests/bug63486.phpt new file mode 100644 index 0000000000..72b8663e43 --- /dev/null +++ b/ext/mysqli/tests/bug63486.phpt @@ -0,0 +1,55 @@ +--TEST-- +mysqli_free_resource() - resets the zval to NULL +--SKIPIF-- +<?php + require_once('skipif.inc'); + require_once('skipifemb.inc'); + require_once('skipifconnectfailure.inc'); +?> +--FILE-- +<?php + require('connect.inc'); + if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) { + printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); + die(); + } + + if (!($res = mysqli_query($link, "SELECT 1"))) { + printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + die(); + } + + $row = mysqli_fetch_row($res); + var_dump($row); + var_dump($res); + + mysqli_free_result($res); + + var_dump($row); + var_dump($res); +?> +--EXPECTF-- +array(1) { + [0]=> + string(1) "1" +} +object(mysqli_result)#3 (5) { + ["current_field"]=> + int(0) + ["field_count"]=> + int(1) + ["lengths"]=> + array(1) { + [0]=> + int(1) + } + ["num_rows"]=> + int(1) + ["type"]=> + int(0) +} +array(1) { + [0]=> + string(1) "1" +} +NULL |