do not ignore negative characters (e.g. EOF and partial EOF); fix #2361 fix #2369

parent a13e8f5e
......@@ -3373,7 +3373,9 @@ nextc(parser_state *p)
c = (unsigned char)*p->s++;
}
}
p->column++;
if (c >= 0) {
p->column++;
}
if (c == '\r') {
c = nextc(p);
if (c != '\n') {
......@@ -3396,8 +3398,9 @@ nextc(parser_state *p)
static void
pushback(parser_state *p, int c)
{
if (c < 0) return;
p->column--;
if (c >= 0) {
p->column--;
}
p->pb = cons((node*)(intptr_t)c, p->pb);
}
......@@ -3421,7 +3424,7 @@ peekc_n(parser_state *p, int n)
do {
c0 = nextc(p);
if (c0 < 0) return c0;
if (c0 == -1) return c0; /* do not skip partial EOF */
list = push(list, (node*)(intptr_t)c0);
} while(n--);
if (p->pb) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment