summaryrefslogtreecommitdiff
path: root/ext/opcache/tests/jit
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2021-01-20 11:03:37 +0300
committerDmitry Stogov <dmitry@zend.com>2021-01-20 11:03:37 +0300
commit6288228b566db29637e041ffd6392d9895d4d223 (patch)
treeea520430347f11a0c39218b276c2c3fc25921f6f /ext/opcache/tests/jit
parent34f0f60db50dc0e257193477d6df4b03d5da5a8d (diff)
downloadphp-git-6288228b566db29637e041ffd6392d9895d4d223.tar.gz
Fixed bug #80634 (write_property handler of internal classes is skipped on preloaded JITted code)
Diffstat (limited to 'ext/opcache/tests/jit')
-rw-r--r--ext/opcache/tests/jit/bug80634.phpt22
-rw-r--r--ext/opcache/tests/jit/preload_bug80634.inc10
2 files changed, 32 insertions, 0 deletions
diff --git a/ext/opcache/tests/jit/bug80634.phpt b/ext/opcache/tests/jit/bug80634.phpt
new file mode 100644
index 0000000000..579adda0e3
--- /dev/null
+++ b/ext/opcache/tests/jit/bug80634.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #80634 (write_property handler of internal classes is skipped on preloaded JITted code)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.file_update_protection=0
+opcache.jit_buffer_size=1M
+opcache.protect_memory=1
+opcache.jit=function
+opcache.preload={PWD}/preload_bug80634.inc
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$v = new SomeClass(5);
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Writing to DatePeriod->interval is unsupported in %spreload_bug80634.inc:7
+Stack trace:
+#0 %sbug80634.php(2): SomeClass->__construct(5)
+#1 {main}
+ thrown in %spreload_bug80634.inc on line 7 \ No newline at end of file
diff --git a/ext/opcache/tests/jit/preload_bug80634.inc b/ext/opcache/tests/jit/preload_bug80634.inc
new file mode 100644
index 0000000000..feee9ec970
--- /dev/null
+++ b/ext/opcache/tests/jit/preload_bug80634.inc
@@ -0,0 +1,10 @@
+<?php
+class SomeClass extends \DatePeriod {
+ public $interval;
+
+ public function __construct(int $v) {
+ parent::__construct(new \DateTime('2020-12-31'), new \DateInterval("P1Y"), 1);
+ $this->interval = $v;
+ var_dump($this->interval);
+ }
+} \ No newline at end of file