]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 15 Nov 2019 11:07:24 +0000 (12:07 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 15 Nov 2019 11:08:55 +0000 (12:08 +0100)
* PHP-7.4:
  Fixed bug #78810

1  2 
Zend/zend_object_handlers.c

index c73f6019f65a75cab7bcbcff3f6eaabb50220dd4,3a7b83ed63f422d7c18acf7a5b7bac8fb94453ab..3b0bec45a5f21e9e14cc11862b234044f86354ff
@@@ -1013,8 -1044,16 +1013,16 @@@ ZEND_API zval *zend_std_get_property_pt
                        if (EXPECTED(!zobj->ce->__get) ||
                            UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) {
                                if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
-                                       ZVAL_NULL(retval);
-                                       zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
+                                       if (UNEXPECTED(prop_info)) {
+                                               zend_throw_error(NULL,
+                                                       "Typed property %s::$%s must not be accessed before initialization",
+                                                       ZSTR_VAL(prop_info->ce->name),
+                                                       ZSTR_VAL(name));
+                                               retval = &EG(error_zval);
+                                       } else {
+                                               ZVAL_NULL(retval);
 -                                              zend_error(E_NOTICE, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
++                                              zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
+                                       }
                                }
                        } else {
                                /* we do have getter - fail and let it try again with usual get/set */