Skip to content

Commit

Permalink
Fixed bug #76094 (Access violation when using opcache)
Browse files Browse the repository at this point in the history
  • Loading branch information
laruence committed Mar 15, 2018
1 parent 84881c6 commit 4758164
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ PHP NEWS
. Fixed bug #76088 (ODBC functions are not available by default on Windows).
(cmb)

- Opcache:
. Fixed bug #76094 (Access violation when using opcache). (Laruence)

- Standard:
. Fixed bug #74139 (mail.add_x_header default inconsistent with docs). (cmb)

Expand Down
3 changes: 2 additions & 1 deletion ext/opcache/Optimizer/dce.c
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,8 @@ static zend_bool dce_instr(context *ctx, zend_op *opline, zend_ssa_op *ssa_op) {

if ((opline->op1_type & (IS_VAR|IS_TMP_VAR))&& !is_var_dead(ctx, ssa_op->op1_use)) {
if (!try_remove_var_def(ctx, ssa_op->op1_use, ssa_op->op1_use_chain, opline)) {
if (ssa->var_info[ssa_op->op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)) {
if (ssa->var_info[ssa_op->op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)
&& opline->opcode != ZEND_CASE) {
free_var = ssa_op->op1_use;
free_var_type = opline->op1_type;
}
Expand Down
26 changes: 26 additions & 0 deletions ext/opcache/tests/bug76094.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
--TEST--
Bug #76094 (Access violation when using opcache)
--INI--
opcache.enable=1
opcache.enable_cli=1
opcache.optimization_level=-1
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
function MetaType($t)
{

switch (strtoupper($t)) {
case PHP_INT_MAX :
return 1;
case 0:
default:
return 0;
}
}

var_dump(MetaType("aa"));
?>
--EXPECT--
int(0)

0 comments on commit 4758164

Please sign in to comment.