zval *retval;
mysqli_object *obj;
mysqli_prop_handler *hnd;
- zend_object_handlers *std_hnd;
int ret;
ret = FAILURE;
retval = EG(uninitialized_zval_ptr);
}
} else {
- std_hnd = zend_get_std_object_handlers();
+ zend_object_handlers * std_hnd = zend_get_std_object_handlers();
retval = std_hnd->read_property(object, member, type TSRMLS_CC);
}
zval tmp_member;
mysqli_object *obj;
mysqli_prop_handler *hnd;
- zend_object_handlers *std_hnd;
int ret;
if (member->type != IS_STRING) {
zval_ptr_dtor(&value);
}
} else {
- std_hnd = zend_get_std_object_handlers();
+ zend_object_handlers * std_hnd = zend_get_std_object_handlers();
std_hnd->write_property(object, member, value TSRMLS_CC);
}
default:
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid value for has_set_exists");
}
+ } else {
+ zend_object_handlers * std_hnd = zend_get_std_object_handlers();
+ ret = std_hnd->has_property(object, member, has_set_exists TSRMLS_CC);
}
if (member == &tmp_member) {
zval_dtor(member);
--- /dev/null
+--TEST--
+Bug #46614 (Extended MySQLi class gives incorrect empty() result)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+if (!defined("MYSQLI_ASYNC")) {
+ die("skip mysqlnd only");
+}
+?>
+--FILE--
+<?php
+class MySQL_Ext extends mysqli{
+ protected $fooData = array();
+
+ public function isEmpty()
+ {
+ $this->extData[] = 'Bar';
+ return empty($this->extData);
+ }
+}
+
+
+
+ include ("connect.inc");
+ $MySQL_Ext = new MySQL_Ext($host, $user, $passwd, $db);
+
+ $isEmpty = $MySQL_Ext->isEmpty();
+ var_dump($isEmpty);
+?>
+--EXPECT--
+bool(false)