]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.2'
authorXinchen Hui <laruence@gmail.com>
Thu, 26 Oct 2017 02:16:55 +0000 (10:16 +0800)
committerXinchen Hui <laruence@gmail.com>
Thu, 26 Oct 2017 02:16:55 +0000 (10:16 +0800)
* PHP-7.2:
  Update NEWS
  Update NEWS
  Fixed bug #75420 (Crash when modifing property name in __isset for BP_VAR_IS)

Conflicts:
Zend/zend_object_handlers.c

1  2 
Zend/zend_object_handlers.c

index 3de2f9910e21c278c1ead965a5337d0506a1780c,b3cdc92beddaa1a9631ff743409b2cb5025c2cae..ff8ee732e95216b62753f62d24915d4088724ec0
@@@ -544,7 -564,8 +544,8 @@@ zval *zend_std_read_property(zval *obje
        zend_object *zobj;
        zval tmp_member;
        zval *retval;
 -      uint32_t property_offset;
 +      uintptr_t property_offset;
+       uint32_t *guard = NULL;
  
        zobj = Z_OBJ_P(object);
  
  
        /* magic isset */
        if ((type == BP_VAR_IS) && zobj->ce->__isset) {
 -              zval tmp_object, tmp_result;
 +              zval tmp_result;
-               uint32_t *guard = zend_get_property_guard(zobj, Z_STR_P(member));
+               guard = zend_get_property_guard(zobj, Z_STR_P(member));
  
                if (!((*guard) & IN_ISSET)) {
 -                      ZVAL_COPY(&tmp_object, object);
                        ZVAL_UNDEF(&tmp_result);
  
                        *guard |= IN_ISSET;
  
        /* magic get */
        if (zobj->ce->__get) {
-               uint32_t *guard = zend_get_property_guard(zobj, Z_STR_P(member));
+               if (guard == NULL) {
+                       guard = zend_get_property_guard(zobj, Z_STR_P(member));
+               }
                if (!((*guard) & IN_GET)) {
 -                      zval tmp_object;
 -
                        /* have getter - try with it! */
 -                      ZVAL_COPY(&tmp_object, object);
                        *guard |= IN_GET; /* prevent circular getting */
 -                      zend_std_call_getter(&tmp_object, member, rv);
 +                      zend_std_call_getter(object, member, rv);
                        *guard &= ~IN_GET;
  
                        if (Z_TYPE_P(rv) != IS_UNDEF) {