diff options
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r-- | Zend/zend_opcode.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index a0301a9add..41b40a2663 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -657,12 +657,16 @@ ZEND_API int pass_two(zend_op_array *op_array) } case ZEND_DECLARE_ANON_CLASS: case ZEND_DECLARE_ANON_INHERITED_CLASS: - case ZEND_CATCH: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: /* absolute index to relative offset */ opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); break; + case ZEND_CATCH: + if (opline->extended_value != ZEND_LAST_CATCH) { + ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2); + } + break; case ZEND_RETURN: case ZEND_RETURN_BY_REF: if (op_array->fn_flags & ZEND_ACC_GENERATOR) { |