diff options
Diffstat (limited to 'ext/opcache')
-rw-r--r-- | ext/opcache/tests/bug78937_1.phpt | 22 | ||||
-rw-r--r-- | ext/opcache/tests/bug78937_2.phpt | 22 | ||||
-rw-r--r-- | ext/opcache/tests/bug78937_3.phpt | 24 | ||||
-rw-r--r-- | ext/opcache/tests/bug78937_4.phpt | 22 | ||||
-rw-r--r-- | ext/opcache/tests/bug78937_5.phpt | 23 | ||||
-rw-r--r-- | ext/opcache/tests/bug78937_6.phpt | 25 | ||||
-rw-r--r-- | ext/opcache/tests/preload_bug78937.inc | 8 |
7 files changed, 146 insertions, 0 deletions
diff --git a/ext/opcache/tests/bug78937_1.phpt b/ext/opcache/tests/bug78937_1.phpt new file mode 100644 index 0000000000..1125ad4eb0 --- /dev/null +++ b/ext/opcache/tests/bug78937_1.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #78937.1 (Preloading unlinkable anonymous class can segfault) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_bug78937.inc +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +class Bar { +} +var_dump(foo()); +?> +--EXPECTF-- +Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6 + +Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3 + +Fatal error: Anonymous class wasn't preloaded in %spreload_bug78937.inc on line 3 + diff --git a/ext/opcache/tests/bug78937_2.phpt b/ext/opcache/tests/bug78937_2.phpt new file mode 100644 index 0000000000..880063298b --- /dev/null +++ b/ext/opcache/tests/bug78937_2.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #78937.2 (Preloading unlinkable anonymous class can segfault) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_bug78937.inc +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +include(__DIR__ . "/preload_bug78937.inc"); +class Bar { +} +var_dump(foo()); +?> +--EXPECTF-- +Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6 + +Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3 +object(class@anonymous)#%d (0) { +}
\ No newline at end of file diff --git a/ext/opcache/tests/bug78937_3.phpt b/ext/opcache/tests/bug78937_3.phpt new file mode 100644 index 0000000000..1c706e237d --- /dev/null +++ b/ext/opcache/tests/bug78937_3.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #78937.3 (Preloading unlinkable anonymous class can segfault) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_bug78937.inc +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +include(__DIR__ . "/preload_bug78937.inc"); +var_dump(foo()); +?> +--EXPECTF-- +Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6 + +Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3 + +Fatal error: Uncaught Error: Class 'Bar' not found in %spreload_bug78937.inc:3 +Stack trace: +#0 %sbug78937_3.php(3): foo() +#1 {main} + thrown in %spreload_bug78937.inc on line 3 diff --git a/ext/opcache/tests/bug78937_4.phpt b/ext/opcache/tests/bug78937_4.phpt new file mode 100644 index 0000000000..b555516d00 --- /dev/null +++ b/ext/opcache/tests/bug78937_4.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #78937.4 (Preloading unlinkable anonymous class can segfault) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_bug78937.inc +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +class Bar { +} +bar(); +var_dump(new Foo); +?> +--EXPECTF-- +Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6 + +Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3 + +Fatal error: Class foo wasn't preloaded in %spreload_bug78937.inc on line 6
\ No newline at end of file diff --git a/ext/opcache/tests/bug78937_5.phpt b/ext/opcache/tests/bug78937_5.phpt new file mode 100644 index 0000000000..f9f01a2a26 --- /dev/null +++ b/ext/opcache/tests/bug78937_5.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #78937.5 (Preloading unlinkable anonymous class can segfault) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_bug78937.inc +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +include(__DIR__ . "/preload_bug78937.inc"); +class Bar { +} +bar(); +var_dump(new Foo); +?> +--EXPECTF-- +Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6 + +Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3 +object(Foo)#%d (0) { +}
\ No newline at end of file diff --git a/ext/opcache/tests/bug78937_6.phpt b/ext/opcache/tests/bug78937_6.phpt new file mode 100644 index 0000000000..28dcb0ce53 --- /dev/null +++ b/ext/opcache/tests/bug78937_6.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #78937.6 (Preloading unlinkable anonymous class can segfault) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_bug78937.inc +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +include(__DIR__ . "/preload_bug78937.inc"); +bar(); +var_dump(new Foo); +?> +--EXPECTF-- +Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6 + +Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3 + +Fatal error: Uncaught Error: Class 'Bar' not found in %spreload_bug78937.inc:6 +Stack trace: +#0 %sbug78937_6.php(3): bar() +#1 {main} + thrown in %spreload_bug78937.inc on line 6 diff --git a/ext/opcache/tests/preload_bug78937.inc b/ext/opcache/tests/preload_bug78937.inc new file mode 100644 index 0000000000..7da2dc3227 --- /dev/null +++ b/ext/opcache/tests/preload_bug78937.inc @@ -0,0 +1,8 @@ +<?php +function foo() { + return new class extends Bar {}; +} +function bar() { + class Foo extends Bar { + } +} |