]> granicus.if.org Git - php/commitdiff
Fixed bug #28444 (Cannot access undefined property for object with overloaded propert...
authorDmitry Stogov <dmitry@php.net>
Tue, 18 Jan 2005 09:05:39 +0000 (09:05 +0000)
committerDmitry Stogov <dmitry@php.net>
Tue, 18 Jan 2005 09:05:39 +0000 (09:05 +0000)
Zend/zend_execute.c

index b249b37871a0ed4f7ff5ed452305660d93226548..43479ff46320e7235cc6f8610385f6e9f3e7ec29 100644 (file)
@@ -1341,9 +1341,18 @@ static void zend_fetch_property_address(temp_variable *result, zval **container_
        if (Z_OBJ_HT_P(container)->get_property_ptr_ptr) {
                zval **ptr_ptr = Z_OBJ_HT_P(container)->get_property_ptr_ptr(container, prop_ptr TSRMLS_CC);
                if(NULL == ptr_ptr) {
-                       zend_error_noreturn(E_ERROR, "Cannot access undefined property %s::$%s for object with overloaded property access", Z_OBJCE_P(container)->name, Z_STRVAL_P(prop_ptr));
-               }
-               if (result) {
+                       zval *ptr;
+
+                       if (Z_OBJ_HT_P(container)->read_property &&
+                           (ptr = Z_OBJ_HT_P(container)->read_property(container, prop_ptr, BP_VAR_W TSRMLS_CC)) != NULL) {
+                               if (result) {
+                                       result->var.ptr = ptr;
+                                       result->var.ptr_ptr = &result->var.ptr;
+                               }
+                       } else {
+                               zend_error(E_ERROR, "Cannot access undefined property for object with overloaded property access");
+                       }
+               } else if (result) {
                        result->var.ptr_ptr = ptr_ptr;
                }
        } else if (Z_OBJ_HT_P(container)->read_property) {