From cc84c3d7916640b75ca4dc0785f9b1f417df1664 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 19 Jul 2021 19:57:59 -0700 Subject: Made escape sequence handling stricter: no longer supporting arbitrary characters, only special escapes like \n, hex sequences like \x0a, octal sequences like \012, and backslashes \\ --- print.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'print.c') diff --git a/print.c b/print.c index eb5f67d..a66893b 100644 --- a/print.c +++ b/print.c @@ -162,12 +162,15 @@ static void _print_match(FILE *out, printer_t *pr, match_t *m) } continue; } + const char *start = r; char c = unescapechar(r, &r); - (void)fputc(c, out); - if (c == '\n') { - ++line; - pr->needs_line_number = 1; - } + if (r > start) { + (void)fputc(c, out); + if (c == '\n') { + ++line; + pr->needs_line_number = 1; + } + } else (void)fputc('\\', out); continue; } else if (*r == '\n') { (void)fputc('\n', out); -- cgit v1.2.3