com php-src: Fixed bug #75556 (Invalid opcode 138/1/1): NEWS ext/opcache/Optimizer/zend_optimizer.c ext/opcache/tests/ bug75556.phpt
| From: | Xinchen Hui | Date: | Fri, 24 Nov 2017 16:54:15 +0000 |
| Subject: | com php-src: Fixed bug #75556 (Invalid opcode 138/1/1): NEWS ext/opcache/Optimizer/zend_optimizer.c ext/opcache/tests/ bug75556.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-100361@lists.php.net to get a copy of this message | ||
Commit: c412b8b3844b1881a952e1340dba23288a943f96
Author: Xinchen Hui <laruence@gmail.com> Sat, 25 Nov 2017 00:54:15 +0800
Parents: 0dbb327d705b61e068b4ea7617bae79fc69488d1
Branches: PHP-7.2 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c412b8b3844b1881a952e1340dba23288a943f96
Log:
Fixed bug #75556 (Invalid opcode 138/1/1)
Bugs:
https://bugs.php.net/75556
Changed paths:
M NEWS
M ext/opcache/Optimizer/zend_optimizer.c
A ext/opcache/tests/bug75556.phpt
Diff:
diff --git a/NEWS b/NEWS
index 1c081b4...9ed3c42 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,9 @@ PHP NEWS
. Fixed bug #74862 (Unable to clone instance when private __clone defined).
(Daniel Ciochiu)
+- Opcache:
+ . Fixed bug #75556 (Invalid opcode 138/1/1). (Laruence)
+
- PCRE:
. Fixed bug #74183 (preg_last_error not returning error code after error).
(Andrew Nester)
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c
index f55aa41..d50503d 100644
--- a/ext/opcache/Optimizer/zend_optimizer.c
+++ b/ext/opcache/Optimizer/zend_optimizer.c
@@ -306,6 +306,8 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
/* This would require a non-local change.
* zend_optimizer_replace_by_const() supports this. */
return 0;
+ case ZEND_INSTANCEOF:
+ return 0;
case ZEND_CASE:
case ZEND_FETCH_LIST:
return 0;
diff --git a/ext/opcache/tests/bug75556.phpt b/ext/opcache/tests/bug75556.phpt
new file mode 100644
index 0000000..1b2511c
--- /dev/null
+++ b/ext/opcache/tests/bug75556.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #75556 (Invalid opcode 138/1/1)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.optimization_level=-1
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+ function createFromFormat($format, $date, ?\DateTimeZone $tz = null): ?\DateTimeInterface
+ {
+ if ($tz !== null
+ || ($tz instanceof \DateTimeZone && !in_array($tz->getName(), ['UTC',
'Z'], true))
+ ) {
+ $msg = 'Date objects must have UTC as their timezone';
+ throw new \UnexpectedValueException($msg);
+ }
+
+ return null;
+}
+
+var_dump(createFromFormat('m/d/Y', '12/07/2017', null));
+?>
+--EXPECT--
+NULL