summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--match.c4
2 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 654122fb..a1825d53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2010-02-27 Kaz Kylheku <kkylheku@gmail.com>
+ * match.c (match_lines): Bugfix in freeform directive.
+ If the virtual line is partially matched, the remainder of
+ the line is folded back into list form. In this case, the
+ data line number must be incremented. Otherwise the calling
+ context may conclude that no progress was made, and
+ skip a line of input. I.e. the unmatched part of the input
+ is a new line, even if there had originally
+ been no line break at that point.
+
+2010-02-27 Kaz Kylheku <kkylheku@gmail.com>
+
* lib.h (split_str_sep): Declared.
* lib.c (split_str_sep): New function.
diff --git a/match.c b/match.c
index 5c083a6d..32418442 100644
--- a/match.c
+++ b/match.c
@@ -1004,8 +1004,10 @@ repeat_spec_same_data:
return nil;
}
- if (nump(success))
+ if (nump(success)) {
data = lazy_str_get_trailing_list(ff_dataline, success);
+ data_lineno++;
+ }
bindings = new_bindings;
}