summaryrefslogtreecommitdiffstats
path: root/match.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-09-27 18:27:33 -0700
committerKaz Kylheku <kaz@kylheku.com>2011-09-27 18:27:33 -0700
commitdc20e04cf1e2645158d01f1fc06d744402a1ee99 (patch)
treeb612d83bb9e21a70d213d0e0c70ff6cb30164171 /match.c
parent0a4e0f2ff76761efe933d4ccae4c17efa286f4e3 (diff)
downloadtxr-dc20e04cf1e2645158d01f1fc06d744402a1ee99.tar.gz
txr-dc20e04cf1e2645158d01f1fc06d744402a1ee99.tar.bz2
txr-dc20e04cf1e2645158d01f1fc06d744402a1ee99.zip
* match.c (match_files): Bugfix in skip directive.
We should try the match at least once even if there is no data after a hard skip, so that the query has an opportunity to do an explicit match for no data, as with @(endp). This commit makes possible queries like: @fourth_line_from_bottom @(skip 1 3) @(eof) This query depends on @(skip 1 3) not failing when it runs out of data, because @(eof) checks for htis.
Diffstat (limited to 'match.c')
-rw-r--r--match.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/match.c b/match.c
index 73435770..bb44ff52 100644
--- a/match.c
+++ b/match.c
@@ -992,7 +992,7 @@ repeat_spec_same_data:
num(data_lineno), nao);
}
- while (data && (!max || reps_max++ < cmax)) {
+ while (!max || reps_max++ < cmax) {
result = match_files(spec, files, bindings,
data, num(data_lineno));
@@ -1006,6 +1006,9 @@ repeat_spec_same_data:
num(data_lineno), nao);
data = rest(data);
data_lineno++;
+
+ if (!data)
+ break;
}
uw_block_end;