]> granicus.if.org Git - php/commitdiff
Fix preloading property type resolution
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 14 Jul 2020 10:59:04 +0000 (12:59 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 14 Jul 2020 10:59:04 +0000 (12:59 +0200)
This was causing many failures under --preload...

ext/opcache/ZendAccelerator.c

index 7b4ad8015eae467b3ae67bf01a6c9c431f890495..8529a53bddc36ee21cc51f8d57c02223b6d32fbd 100644 (file)
@@ -3672,12 +3672,15 @@ static zend_bool preload_try_resolve_property_types(zend_class_entry *ce)
                ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop) {
                        zend_type *single_type;
                        ZEND_TYPE_FOREACH(prop->type, single_type) {
-                               zend_class_entry *p = preload_fetch_resolved_ce(ZEND_TYPE_NAME(*single_type), ce);
-                               if (!p) {
-                                       ok = 0;
-                                       continue;
+                               if (ZEND_TYPE_HAS_NAME(*single_type)) {
+                                       zend_class_entry *p =
+                                               preload_fetch_resolved_ce(ZEND_TYPE_NAME(*single_type), ce);
+                                       if (!p) {
+                                               ok = 0;
+                                               continue;
+                                       }
+                                       ZEND_TYPE_SET_CE(*single_type, p);
                                }
-                               ZEND_TYPE_SET_CE(*single_type, p);
                        } ZEND_TYPE_FOREACH_END();
                } ZEND_HASH_FOREACH_END();
        }