From a718d62f743d3f67244e3828a4f351cc29fa8fba Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Fri, 3 Dec 2004 07:57:39 +0000 Subject: [PATCH] MFH: Fix for bug #30967 (properties in extended mysqli classes don't work) --- NEWS | 1 + ext/mysqli/mysqli.c | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 6b5c8f58ea..46eed24b60 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ PHP NEWS - Extended the functionality of is_subclass_of() to accept either a class name or an object as first parameter. (Andrey) - Fixed potential problems with unserializing invalid serialize data. (Marcus) +- Fixed bug #30967 (properties in extended mysqli classes don't work). (Georg) - Fixed bug #30962 (mssql returns space for NULL columns). (Ilia) - Fixed bug #30856 (ReflectionClass::getStaticProperties segfaults). (Marcus) - Fixed bug #30832 ("!" stripped off comments in xml parser). (Rob) diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index a6cb3de2fe..833d8a5d07 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -310,7 +310,7 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry *class_ zend_object_value retval; mysqli_object *intern; zval *tmp; - zend_class_entry *parent; + zend_class_entry *mysqli_base_class; intern = emalloc(sizeof(mysqli_object)); memset(intern, 0, sizeof(mysqli_object)); @@ -320,11 +320,14 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry *class_ intern->ptr = NULL; intern->valid = 0; intern->prop_handler = NULL; - if ((parent = class_type->parent)) + + mysqli_base_class = class_type; + while (mysqli_base_class->type != ZEND_INTERNAL_CLASS && mysqli_base_class->parent != NULL) { - zend_hash_find(&classes, parent->name, parent->name_length + 1, (void **) &intern->prop_handler); + mysqli_base_class = mysqli_base_class->parent; } - zend_hash_find(&classes, class_type->name, class_type->name_length + 1, (void **) &intern->prop_handler); + zend_hash_find(&classes, mysqli_base_class->name, mysqli_base_class->name_length + 1, + (void **) &intern->prop_handler); ALLOC_HASHTABLE(intern->zo.properties); zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0); -- 2.40.0