Attached is a patch for zend_execute.c which will fall to read_property if
get_property_ptr_ptr returns NULL in zend_fetch_property_address_inner.
Hopefully this is the correct fix as it didnt break any tests and resolves
the issue I hit.

Rob

From: Marcus Boerger

> Sounds more like small oversight. Could you try to make a patch for that?
Index: zend_execute.c
===================================================================
RCS file: /repository/ZendEngine2/zend_execute.c,v
retrieving revision 1.651
diff -r1.651 zend_execute.c
156a157
>       int have_get_ptr = 0;
176c177,186
<               if(NULL == ptr_ptr) {
---
>               if(NULL != ptr_ptr) {
>                       have_get_ptr = 1;
>                       T(result->u.var).var.ptr_ptr = ptr_ptr;
>               }
>       }
>       if (have_get_ptr != 1) {
>               if (Z_OBJ_HT_P(object)->read_property) {
>                       T(result->u.var).var.ptr = 
> Z_OBJ_HT_P(object)->read_property(object, prop_ptr, BP_VAR_W TSRMLS_CC);
>                       T(result->u.var).var.ptr_ptr = &T(result->u.var).var.ptr;
>               } else {
177a188
>                       T(result->u.var).var.ptr_ptr = &EG(error_zval_ptr);
179,185d189
<               T(result->u.var).var.ptr_ptr = ptr_ptr;
<       } else if (Z_OBJ_HT_P(object)->read_property) {
<               T(result->u.var).var.ptr = Z_OBJ_HT_P(object)->read_property(object, 
prop_ptr, BP_VAR_W TSRMLS_CC);
<               T(result->u.var).var.ptr_ptr = &T(result->u.var).var.ptr;
<       } else {
<               zend_error(E_WARNING, "This object doesn't support property 
references");
<               T(result->u.var).var.ptr_ptr = &EG(error_zval_ptr);

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to