diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-10-11 20:51:11 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-10-11 20:51:11 +0300 |
commit | 428ab22a1ecc3fb8a868ac1f1d2ef0723b5c8c90 (patch) | |
tree | 2d648ce1c021a4505d3d56db82768a9648c57d95 /awkgram.c | |
parent | 34223c953a37ec8903f27df2e4ddd5da9e59d777 (diff) | |
parent | c867589418a96bc619799854c1b2258bb23e2c4e (diff) | |
download | egawk-428ab22a1ecc3fb8a868ac1f1d2ef0723b5c8c90.tar.gz egawk-428ab22a1ecc3fb8a868ac1f1d2ef0723b5c8c90.tar.bz2 egawk-428ab22a1ecc3fb8a868ac1f1d2ef0723b5c8c90.zip |
Merge branch 'master' into feature/cmake
Diffstat (limited to 'awkgram.c')
-rw-r--r-- | awkgram.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -149,8 +149,8 @@ const char *const ruletab[] = { static bool in_print = false; /* lexical scanning kludge for print */ static int in_parens = 0; /* lexical scanning kludge for print */ static int sub_counter = 0; /* array dimension counter for use in delete */ -static char *lexptr = NULL; /* pointer to next char during parsing */ -static char *lexend; +static char *lexptr; /* pointer to next char during parsing */ +static char *lexend; /* end of buffer */ static char *lexptr_begin; /* keep track of where we were for error msgs */ static char *lexeme; /* beginning of lexeme for debugging */ static bool lexeof; /* seen EOF for current source? */ @@ -4706,7 +4706,8 @@ yyerror(const char *m, ...) if (thisline == NULL) { cp = lexeme; if (*cp == '\n') { - cp--; + if (cp > lexptr_begin) + cp--; mesg = _("unexpected newline or end of string"); } for (; cp != lexptr_begin && *cp != '\n'; --cp) @@ -4717,6 +4718,8 @@ yyerror(const char *m, ...) } /* NL isn't guaranteed */ bp = lexeme; + if (bp < thisline) + bp = thisline + 1; while (bp < lexend && *bp && *bp != '\n') bp++; } else { |