From 561ad55a6059d8b77b14bdb5ea1e684cef827725 Mon Sep 17 00:00:00 2001 From: Nate Choe Date: Sat, 17 Feb 2024 23:56:28 -0600 Subject: [PATCH] Fix a nesting bug Before, strings such as @n@!_filename@@m wouldn't be parsed correctly because of that '@@' in there. --- src/parse.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/parse.c b/src/parse.c index 8f04fbd..aeb7c8e 100644 --- a/src/parse.c +++ b/src/parse.c @@ -181,7 +181,7 @@ autoescapeend: /* read nest data into a string */ while (i < data->len) { int c; - c = data->data[i++]; + c = data->data[i++]; if (c != ESCAPE_CHAR) { appendchar(buff, c); continue; @@ -334,16 +334,17 @@ static int expandfile(struct expandfile *ret, char *filename, int level) { appendchar(ret->data, c); continue; } - c = fgetc(file); - if (c == EOF) { - goto no_nest_end; - } - appendchar(ret->data, ESCAPE_CHAR); appendchar(ret->data, c); - if (c != NEST_END) { - continue; + c = fgetc(file); + if (c == NEST_END) { + appendchar(ret->data, c); + break; } - break; + ungetc(c, file); + do { + c = fgetc(file); + appendchar(ret->data, c); + } while (c != ESCAPE_CHAR); } break; no_nest_end: