Skip to content

Commit 2b14db0

Browse files
committed
Do not increment trace_count when event_handler skipped the frame
In effect, this causes `--limit` to work in conjunction with `--filter` as one would expect.
1 parent d3fe3c6 commit 2b14db0

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

event_fout.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ int event_handler_fout(struct trace_context_s *context, int event_type) {
119119
}
120120
if (opt_filter_re) {
121121
rv = regexec(opt_filter_re, udata->buf, 0, NULL, 0);
122-
if (opt_filter_negate == 0 && rv != 0) break;
123-
if (opt_filter_negate != 0 && rv == 0) break;
122+
if (opt_filter_negate == 0 && rv != 0) return PHPSPY_ERR_SKIPPED;
123+
if (opt_filter_negate != 0 && rv == 0) return PHPSPY_ERR_SKIPPED;
124124
}
125125
do {
126126
if (opt_verbose_fields_ts) {

phpspy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
#define PHPSPY_ERR 1
7575
#define PHPSPY_ERR_PID_DEAD 2
7676
#define PHPSPY_ERR_BUF_FULL 4
77+
#define PHPSPY_ERR_SKIPPED 8
7778

7879
#define PHPSPY_TRACE_EVENT_INIT 0
7980
#define PHPSPY_TRACE_EVENT_STACK_BEGIN 1

tests/test_filter.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,10 @@ declare -A not_expected
1313
expected[negate_include_nanosleep]='nanosleep'
1414
not_expected[negate_exclude_usleep]='usleep'
1515
source $TEST_SH
16+
17+
phpspy_opts=(--limit=1 --filter 'usleep' -- $PHP -r 'time_nanosleep(1, 0); usleep(1000000);')
18+
declare -A expected
19+
declare -A not_expected
20+
expected[limit_include_usleep]='usleep'
21+
not_expected[limit_exclude_nanosleep]='time_nanosleep'
22+
source $TEST_SH

0 commit comments

Comments
 (0)