|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2021, PHP 8.0.3
+- Opcache:
+ . Fixed bug #80634 (write_property handler of internal classes is skipped on
+ preloaded JITted code). (Dmitry)
21 Jan 2021, PHP 8.0.2
{
zend_property_info *info = NULL;
- if (!ce || !(ce->ce_flags & ZEND_ACC_LINKED) || (ce->ce_flags & ZEND_ACC_TRAIT)) {
+ if (!ce ||
+ !(ce->ce_flags & ZEND_ACC_LINKED) ||
+ (ce->ce_flags & ZEND_ACC_TRAIT) ||
+ ce->create_object) {
return NULL;
}
--- /dev/null
+--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
--- /dev/null
+<?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