]> granicus.if.org Git - php/commitdiff
Don't ignore internal classes during preloading
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 3 Nov 2020 10:50:14 +0000 (11:50 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 3 Nov 2020 10:50:14 +0000 (11:50 +0100)
When preloading, it's fine to make use of internal class information,
as we do not support Windows. It is also necessary to allow proper
variance checks against internal classes.

ext/opcache/ZendAccelerator.c
ext/opcache/tests/preload_variance.inc

index 39d04f9a95869c7153405045bc905172110e092a..5f1d80c083322dc7c0998e8b5e334cc15afb306a 100644 (file)
@@ -4450,7 +4450,6 @@ static int accel_preload(const char *config, zend_bool in_child)
        }
        CG(compiler_options) |= ZEND_COMPILE_PRELOAD;
        CG(compiler_options) |= ZEND_COMPILE_HANDLE_OP_ARRAY;
-       CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
        CG(compiler_options) |= ZEND_COMPILE_DELAYED_BINDING;
        CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION;
        CG(compiler_options) |= ZEND_COMPILE_IGNORE_OTHER_FILES;
index 7b2dd7b8ffa179a1270f92a1f1c840cff58d65f0..b1e84b5b5d92cd320d699e1e2536fc6209ddc990 100644 (file)
@@ -13,10 +13,12 @@ class B extends Z {
 class C extends Z {
     public function method($a): self {}
     public function method2($a): C {}
+    public function method3($a): object {}
 }
 class D extends C {
     public function method($a): self {}
     public function method2($a): D {}
+    public function method3($a): stdClass {}
 }
 
 // Works.