From d39c8628b8594c29d234427ba07a12538ab36f41 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Sat, 20 Oct 2007 18:49:31 +0800 Subject: [PARSER] Fix here-doc corruption The change [PARSER] Recognise here-doc delimiters terminated by EOF introduced a regerssion whereby lines starting with eofmark but are not equal to eofmark would be corrupted. This patch fixes it. Test case: cat << _ACEOF _ASBOX _ACEOF Old result: SASBOX New result: _ASBOX --- src/parser.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/parser.c b/src/parser.c index 4b8a5fe..3832f0b 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1047,16 +1047,17 @@ checkend: { if (c == *eofmark) { if (pfgets(line, sizeof line) != NULL) { char *p, *q; + int cc; p = line; for (q = eofmark + 1;; p++, q++) { - c = *p; - if (c == '\n') - c = 0; - if (!*q || c != *q) + cc = *p; + if (cc == '\n') + cc = 0; + if (!*q || cc != *q) break; } - if (c == *q) { + if (cc == *q) { c = PEOF; plinno++; needprompt = doprompt; -- cgit 1.4.1