summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-09-23 11:25:33 +0200
committerAnatol Belski <ab@php.net>2016-09-23 11:25:33 +0200
commit8f256bebef344634b6ca0bc5fac03b614ffb79c3 (patch)
tree918c622bb8e22c3b1535f4076dcba17261a80aa1
parentf7e5481a10ce0b4041893ed298f89574ab07e27d (diff)
parent9ee913a773767de678ba0898861b25aefa48ad1b (diff)
downloadphp-git-8f256bebef344634b6ca0bc5fac03b614ffb79c3.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0: update NEWS phpdbg next command must stop when leaving function
-rw-r--r--sapi/phpdbg/phpdbg_prompt.c10
-rw-r--r--sapi/phpdbg/tests/next_001.phpt37
2 files changed, 44 insertions, 3 deletions
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index b19739ed34..2a75dedc67 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -1535,12 +1535,18 @@ ex_is_caught:
goto next;
}
+ /* not while in conditionals */
+ phpdbg_print_opline_ex(execute_data, 0);
+
/* perform seek operation */
if ((PHPDBG_G(flags) & PHPDBG_SEEK_MASK) && !(PHPDBG_G(flags) & PHPDBG_IN_EVAL)) {
/* current address */
zend_ulong address = (zend_ulong) execute_data->opline;
if (PHPDBG_G(seek_ex) != execute_data) {
+ if (PHPDBG_G(flags) & PHPDBG_IS_STEPPING) {
+ goto stepping;
+ }
goto next;
}
@@ -1584,10 +1590,8 @@ ex_is_caught:
}
}
- /* not while in conditionals */
- phpdbg_print_opline_ex(execute_data, 0);
-
if (PHPDBG_G(flags) & PHPDBG_IS_STEPPING && (PHPDBG_G(flags) & PHPDBG_STEP_OPCODE || execute_data->opline->lineno != PHPDBG_G(last_line))) {
+stepping:
PHPDBG_G(flags) &= ~PHPDBG_IS_STEPPING;
DO_INTERACTIVE(1);
}
diff --git a/sapi/phpdbg/tests/next_001.phpt b/sapi/phpdbg/tests/next_001.phpt
new file mode 100644
index 0000000000..3c92cebbdb
--- /dev/null
+++ b/sapi/phpdbg/tests/next_001.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test next command on function boundaries
+--PHPDBG--
+b 4
+r
+n
+
+
+q
+--EXPECTF--
+[Successful compilation of %s]
+prompt> [Breakpoint #0 added at %s:4]
+prompt> [Breakpoint #0 at %s:4, hits: 1]
+>00004: echo 0;
+ 00005: }
+ 00006:
+prompt> 0
+[L5 %s RETURN null %s]
+>00005: }
+ 00006:
+ 00007: foo();
+prompt> [L8 %s ECHO 1 %s]
+>00008: echo 1;
+ 00009:
+prompt> 1
+[L8 %s RETURN 1 %s]
+[Script ended normally]
+prompt>
+--FILE--
+<?php
+
+function foo() {
+ echo 0;
+}
+
+foo();
+echo 1;