diff options
author | Anatol Belski <ab@php.net> | 2014-07-21 09:26:43 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-07-21 09:26:43 +0200 |
commit | 0ff7fb02e11ce6cc2dec9bc10b22e552cf747999 (patch) | |
tree | 0624f622ae7e080eb49ff1d6828bd8b45627be77 /Zend/zend_vm_execute.h | |
parent | 96783bdfb79b33646dc916d4b93bc33b78d70c4c (diff) | |
parent | b131b03dc2ec4f3765e0d603b44f25c8029a3c2f (diff) | |
download | php-git-0ff7fb02e11ce6cc2dec9bc10b22e552cf747999.tar.gz |
Merge remote-tracking branch 'origin/PHP-5.6' into str_size_and_int64_56_backport
* origin/PHP-5.6: (131 commits)
Enable $ replacement in exif, ldap, pdo_pgsql and tidy
See bug #67635
NEWS
NEWS
improve previous, add message during configure
Fixed bug #67635 php links to systemd libraries without using pkg-config
Improve fix for #66608
Fixed segfault with empty break
New added opcodes don't need to be resloved
Update NEWS
Update NEWS
Update NEWS
Fixed bug #66827 Session raises E_NOTICE when session name variable is array
implemented copy libs of core exts in phpize mode
fix copy the ext dll into the prefix path in phpize mode
fix default prefix in phpize mode
fix file with zero size usage in phpize mode
Update NEWS
Fixed bug #66608 (Incorrect behavior with nested "finally" blocks)
Enable build without atoll (e.g old AIX flavours)
...
Conflicts:
Zend/zend_opcode.c
ext/date/php_date.c
ext/mysqli/mysqli.c
ext/pgsql/pgsql.c
ext/session/session.c
ext/spl/spl_array.c
ext/standard/http_fopen_wrapper.c
ext/standard/string.c
sapi/litespeed/lsapi_main.c
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r-- | Zend/zend_vm_execute.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 22d400720f..b4eb0c47e8 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -1344,13 +1344,13 @@ static int ZEND_FASTCALL ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE - if (opline->extended_value && + if ((opline->extended_value & ZEND_FAST_CALL_FROM_CATCH) && UNEXPECTED(EG(prev_exception) != NULL)) { /* in case of unhandled exception jump to catch block instead of finally */ ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.opline_num]); ZEND_VM_CONTINUE(); } - EX(fast_ret) = opline + 1; + EX(fast_ret) = opline; EX(delayed_exception) = NULL; ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); ZEND_VM_CONTINUE(); @@ -1359,7 +1359,10 @@ static int ZEND_FASTCALL ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static int ZEND_FASTCALL ZEND_FAST_RET_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { if (EX(fast_ret)) { - ZEND_VM_SET_OPCODE(EX(fast_ret)); + ZEND_VM_SET_OPCODE(EX(fast_ret) + 1); + if ((EX(fast_ret)->extended_value & ZEND_FAST_CALL_FROM_FINALLY)) { + EX(fast_ret) = &EX(op_array)->opcodes[EX(fast_ret)->op2.opline_num]; + } ZEND_VM_CONTINUE(); } else { /* special case for unhandled exceptions */ |