lua

A copy of the Lua development repository
Log | Files | Refs | README

commit f0cc2d55067d32c1232d9483721254360d4c3bae
parent d289ac81d3629f8dc494a11929d16f03accd1007
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Mon,  9 Sep 1996 11:10:51 -0300

BUG: a program ending in a comment without EOL made lex loops forever.

Diffstat:
Minout.c | 5+++--
Mlex.c | 10++--------
2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/inout.c b/inout.c @@ -5,7 +5,7 @@ ** Also provides some predefined lua functions. */ -char *rcs_inout="$Id: inout.c,v 2.37 1996/05/28 21:07:32 roberto Exp $"; +char *rcs_inout="$Id: inout.c,v 2.38 1996/07/12 20:00:26 roberto Exp roberto $"; #include <stdio.h> @@ -31,7 +31,8 @@ static char *st; */ static int fileinput (void) { - return fgetc (fp); + int c = fgetc(fp); + return (c == EOF) ? 0 : c; } /* diff --git a/lex.c b/lex.c @@ -1,4 +1,4 @@ -char *rcs_lex = "$Id: lex.c,v 2.33 1996/05/28 21:07:32 roberto Exp roberto $"; +char *rcs_lex = "$Id: lex.c,v 2.34 1996/05/30 14:04:07 roberto Exp roberto $"; #include <ctype.h> @@ -82,7 +82,6 @@ static int read_long_string (char *yytext, int buffsize) yytext = luaI_buffer(buffsize *= 2); switch (current) { - case EOF: case 0: save(0); return WRONGTOKEN; @@ -132,10 +131,6 @@ int luaY_lex (void) int tokensize = 0; switch (current) { - case EOF: - case 0: - save(0); - return 0; case '\n': linelasttoken = ++lua_linenumber; case ' ': case '\r': /* CR: to avoid problems with DOS/Windows */ @@ -206,7 +201,6 @@ int luaY_lex (void) yytext = luaI_buffer(buffsize *= 2); switch (current) { - case EOF: case 0: case '\n': save(0); @@ -316,7 +310,7 @@ int luaY_lex (void) return NUMBER; } - default: /* also end of file */ + default: /* also end of program (0) */ { save_and_next(); return yytext[0];