diff options
author | Bob Weinand <bobwei9@hotmail.com> | 2016-10-16 12:34:10 +0200 |
---|---|---|
committer | Bob Weinand <bobwei9@hotmail.com> | 2016-10-16 12:34:10 +0200 |
commit | 601ab6e9d0cdd52a7b86819ae2e604936e83f648 (patch) | |
tree | 6005927b6e51da13fd71742e44cb5002f0040875 /sapi/phpdbg | |
parent | 9f472ba5e32fb2aac725b65fefb9a992ae66caee (diff) | |
download | php-git-601ab6e9d0cdd52a7b86819ae2e604936e83f648.tar.gz |
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
Diffstat (limited to 'sapi/phpdbg')
-rw-r--r-- | sapi/phpdbg/phpdbg_utils.c | 2 | ||||
-rw-r--r-- | sapi/phpdbg/tests/exceptions_001.phpt | 6 |
2 files changed, 5 insertions, 3 deletions
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); } })(); |