]> granicus.if.org Git - php/commitdiff
Fix #63486
authorJulien Pauli <jpauli@php.net>
Fri, 20 Feb 2015 12:38:35 +0000 (13:38 +0100)
committerStanislav Malyshev <stas@php.net>
Mon, 9 Mar 2015 06:40:55 +0000 (23:40 -0700)
ext/mysqli/php_mysqli_structs.h
ext/mysqli/tests/bug63486.phpt [new file with mode: 0644]

index d061bfb21a231859559865033857f307b2dd7dbb..e6dafea58c990b01d381b78bf3e1bc11f5ff647a 100644 (file)
@@ -313,6 +313,7 @@ extern PHPAPI zend_class_entry *spl_ce_RuntimeException;
        mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
        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 (file)
index 0000000..72b8663
--- /dev/null
@@ -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