diff options
author | Dmitry Stogov <dmitry@zend.com> | 2016-05-25 01:25:12 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2016-05-25 01:25:12 +0300 |
commit | 2ae21abdf7b87ee95d76aca22e787408d7c766cf (patch) | |
tree | 26c8c6ba8f81f077c10cd5031b3d8b79ecdaa064 /sapi | |
parent | 91f5940329fede8a26b64e99d4d6d858fe8654cc (diff) | |
download | php-git-2ae21abdf7b87ee95d76aca22e787408d7c766cf.tar.gz |
Fixed bug #72213 (Finally leaks on nested exceptions).
Squashed commit of the following:
commit 8461b0407fc9eab0869d43b84e6a92ba2fe06997
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed May 25 00:34:42 2016 +0300
Rmoved zend_try_catch_element.parent and walk through op_array.try_catch_array backward from the current try_cacth_offset.
commit 0c71e249649bed178bfbef30bb3e63c57f07af05
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed May 25 00:04:53 2016 +0300
Move SAVE_OPLINE() to its original place
commit 111432a4df738fcd65878a42f23194dc3c4983a2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed May 25 00:01:10 2016 +0300
Separate the common part of ZEND_HANDLE_EXCEPTION and FAST_RET into zend_dispatch_try_catch_finally_helper.
commit 4f21c06c2ec17819a708bc037f318784554a6ecd
Author: Nikita Popov <nikic@php.net>
Date: Tue May 24 14:55:27 2016 +0200
Improve finally fix
commit da5c7274997b8308e682b5bf280124e3a1483086
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 10:36:08 2016 +0300
Fixed Zend/tests/try/bug70228_3.phpt and Zend/tests/try/bug70228_4.phpt
commit cfcedf2fb4f4fc1f7de9f7d53a3037fed7795f19
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 02:59:27 2016 +0300
Added test
commit 4c6aa93d43da941eb4fda15b48154bfb104bdc04
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 00:38:20 2016 +0300
Added tests
commit 8a8f4704b0eca2e460d42c1f253a363b0db8e510
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon May 23 23:27:34 2016 +0300
Fixed bug #72213 (Finally leaks on nested exceptions)
Diffstat (limited to 'sapi')
-rw-r--r-- | sapi/phpdbg/phpdbg_opcode.c | 17 | ||||
-rw-r--r-- | sapi/phpdbg/tests/exceptions_003.phpt | 2 |
2 files changed, 2 insertions, 17 deletions
diff --git a/sapi/phpdbg/phpdbg_opcode.c b/sapi/phpdbg/phpdbg_opcode.c index 8bd7c4e50e..44119c9e51 100644 --- a/sapi/phpdbg/phpdbg_opcode.c +++ b/sapi/phpdbg/phpdbg_opcode.c @@ -74,7 +74,7 @@ char *phpdbg_decode_input_op( } else if (ZEND_VM_OP_NUM == (flags & ZEND_VM_OP_MASK)) { spprintf(&result, 0, "%" PRIu32, op.num); } else if (ZEND_VM_OP_TRY_CATCH == (flags & ZEND_VM_OP_MASK)) { - if (opline->opcode != ZEND_FAST_RET || opline->extended_value) { + if (op.num != (uint32_t)-1) { spprintf(&result, 0, "try-catch(%" PRIu32 ")", op.num); } } else if (ZEND_VM_OP_LIVE_RANGE == (flags & ZEND_VM_OP_MASK)) { @@ -99,21 +99,6 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *opline) /*{{{ */ uint32_t flags = zend_get_opcode_flags(opline->opcode); char *result, *decode[4] = {NULL, NULL, NULL, NULL}; - /* EX */ - switch (opline->opcode) { - case ZEND_FAST_CALL: - if (opline->extended_value == ZEND_FAST_CALL_FROM_FINALLY) { - decode[0] = estrdup("FAST_CALL<FROM_FINALLY>"); - } - break; - case ZEND_FAST_RET: - if (opline->extended_value != 0) { - spprintf(&decode[0], 0, "FAST_RET<%s>", - opline->extended_value == ZEND_FAST_RET_TO_CATCH ? "TO_CATCH" : "TO_FINALLY"); - } - break; - } - /* OP1 */ decode[1] = phpdbg_decode_input_op( ops, opline, opline->op1, opline->op1_type, ZEND_VM_OP1_FLAGS(flags)); diff --git a/sapi/phpdbg/tests/exceptions_003.phpt b/sapi/phpdbg/tests/exceptions_003.phpt index 37e7289092..2a982bcbe3 100644 --- a/sapi/phpdbg/tests/exceptions_003.phpt +++ b/sapi/phpdbg/tests/exceptions_003.phpt @@ -25,7 +25,7 @@ prompt> [L7 %s ECHO "ok " 00008: } 00009: } catch (Error $e) { prompt> ok -[L7 %s FAST_RET<TO_CATCH> ~%d try-catch(0) %s] +[L7 %s FAST_RET ~%d try-catch(0) %s] [L9 %s CATCH "Error" $e 1 %s] >00005: x(); 00006: } finally { |