summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2017-11-25 00:54:28 +0800
committerXinchen Hui <laruence@gmail.com>2017-11-25 00:54:28 +0800
commita84c7050fd7ee9e737c7cfe5b2405f939d32a291 (patch)
tree781f1699d753be9e164adbd0afd19a8b2a730ccf
parentec2dde0c0be7c13a8d85980e1696176b7292e80b (diff)
parentc412b8b3844b1881a952e1340dba23288a943f96 (diff)
downloadphp-git-a84c7050fd7ee9e737c7cfe5b2405f939d32a291.tar.gz
Merge branch 'PHP-7.2'
* PHP-7.2: Fixed bug #75556 (Invalid opcode 138/1/1)
-rw-r--r--ext/opcache/Optimizer/zend_optimizer.c2
-rw-r--r--ext/opcache/tests/bug75556.phpt26
2 files changed, 28 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c
index 1e5b4a2a73..fb4013780d 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 0000000000..1b2511c580
--- /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