commit c7bc9f60fb5f56e9640a46e7dba71326b173ffe0
parent 69a0a3e07aee3304446942c49527d65ebc5f7c85
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Sun, 24 Sep 2017 08:33:17 +0200
[as] Fix end of string test in expr()
Diffstat:
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/as/expr.c b/as/expr.c
@@ -11,6 +11,7 @@ static char sccsid[] = "@(#) ./as/node.c";
 #define NNODES   10
 
 enum tokens {
+	EOS = -1,
 	IDEN = 1,
 	NUMBER,
 	REG,
@@ -244,21 +245,20 @@ next(void)
 
 	endp = textp;
 	if ((c = *textp) == '\0') {
-		strcpy(yytext, "EOF");
+		strcpy(yytext, "EOS");
 		yylen = 3;
-		return EOF;
-	}
-
-	if (isalpha(c) || c == '_' || c == '.')
+		c = EOS;
+	} else 	if (isalpha(c) || c == '_' || c == '.') {
 		c = iden();
-	else if (isdigit(c))
+	} else if (isdigit(c)) {
 		c = number();
-	else if (c == '\"')
+	} else if (c == '\"') {
 		c = string();
-	else if (c == '\'')
+	} else if (c == '\'') {
 		c = character();
-	else
+	} else {
 		c = operator();
+	}
 
 	return yytoken = c;
 }
@@ -422,15 +422,15 @@ expr(char **s)
 {
 	Node *np;
 
-	if (*s == '\0')
+	textp = *s;
+	if (*textp == '\0')
 		return NULL;
 
-	textp = *s;
 	next();
 	np = or();
 
-	if (yytoken != ',' && yytoken != EOF)
-		error("trailing characters in expression '%s:%s'", *s, textp);
+	if (yytoken != ',' && yytoken != EOS)
+		error("trailing characters in expression '%s'", textp);
 	*s = endp;
 
 	return np;