From: Bob Weinand Date: Sun, 16 Oct 2016 10:34:10 +0000 (+0200) Subject: Fix searching for catch blocks X-Git-Tag: php-7.1.0RC4~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=601ab6e9d0cdd52a7b86819ae2e604936e83f648;p=php Fix searching for catch blocks Since PHP-7.1 catch blocks are addressed with relative byte difference between two catch blocks as opposed to absolute opcode number --- diff --git a/sapi/phpdbg/phpdbg_utils.c b/sapi/phpdbg/phpdbg_utils.c index 331409990e..642c1dec63 100644 --- a/sapi/phpdbg/phpdbg_utils.c +++ b/sapi/phpdbg/phpdbg_utils.c @@ -772,7 +772,7 @@ PHPDBG_API zend_bool phpdbg_check_caught_ex(zend_execute_data *execute_data, zen return 1; } - catch = cur->extended_value; + catch += cur->extended_value / sizeof(zend_op); } while (!cur->result.num); return 0; diff --git a/sapi/phpdbg/tests/exceptions_001.phpt b/sapi/phpdbg/tests/exceptions_001.phpt index 991ea1cc71..99989654cf 100644 --- a/sapi/phpdbg/tests/exceptions_001.phpt +++ b/sapi/phpdbg/tests/exceptions_001.phpt @@ -14,12 +14,12 @@ prompt> handle first 00017: } catch (\Exception $e) { 00018: var_dump($e); prompt> frame #0: {closure}() at %s:16 -frame #1: {main} at %s:20 +frame #1: {main} at %s:22 prompt> 3 prompt> [Uncaught Error in %s on line 16] Error: Call to undefined function foo() in %s:16 Stack trace: -#0 %s(20): {closure}() +#0 %s(22): {closure}() #1 {main} [Script ended normally] prompt> @@ -42,5 +42,7 @@ prompt> foo(); // Error } catch (\Exception $e) { var_dump($e); + } catch (\ParseError $e) { + var_dump($e); } })();