diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-09-27 18:27:33 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-09-27 18:27:33 -0700 |
commit | dc20e04cf1e2645158d01f1fc06d744402a1ee99 (patch) | |
tree | b612d83bb9e21a70d213d0e0c70ff6cb30164171 /match.c | |
parent | 0a4e0f2ff76761efe933d4ccae4c17efa286f4e3 (diff) | |
download | txr-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.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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; |