]> granicus.if.org Git - php/commitdiff
Fixed support for static properties of internal classes
authorDmitry Stogov <dmitry@php.net>
Wed, 11 Aug 2010 08:34:54 +0000 (08:34 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 11 Aug 2010 08:34:54 +0000 (08:34 +0000)
Zend/zend_API.c

index cfef4fa14ba7f80dbe7bce7866f3900816efd907..11dd8c701e18971ca7de4e367acfbbc641eefe96 100644 (file)
@@ -1044,12 +1044,15 @@ ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC
                                p = &class_type->default_static_members_table[i];
                                if (Z_ISREF_PP(p) &&
                                        class_type->parent &&
-                                       class_type->parent->default_static_members_count < i &&
-                                       *p == class_type->parent->default_static_members_table[i]
+                                       i < class_type->parent->default_static_members_count &&
+                                       *p == class_type->parent->default_static_members_table[i] &&
+                                       CE_STATIC_MEMBERS(class_type->parent)[i]
                                ) {
-                                       Z_ADDREF_PP(p);
-                                       Z_SET_ISREF_PP(p);
-                                       CE_STATIC_MEMBERS(class_type)[i] = *p;
+                                       zval *q = CE_STATIC_MEMBERS(class_type->parent)[i];
+
+                                       Z_ADDREF_P(q);
+                                       Z_SET_ISREF_P(q);
+                                       CE_STATIC_MEMBERS(class_type)[i] = q;
                                } else {
                                        zval *r;