Browse Source

tighter size for error buffers

Roberto Ierusalimschy 24 years ago
parent
commit
595e449537
3 changed files with 12 additions and 11 deletions
  1. 4 3
      llex.c
  2. 3 3
      llex.h
  3. 5 5
      lparser.c

+ 4 - 3
llex.c

@@ -1,5 +1,5 @@
 /*
-** $Id: llex.c,v 1.71 2000/09/27 17:41:58 roberto Exp roberto $
+** $Id: llex.c,v 1.72 2000/10/20 16:39:03 roberto Exp roberto $
 ** Lexical Analyzer
 ** See Copyright Notice in lua.h
 */
@@ -38,6 +38,7 @@ void luaX_init (lua_State *L) {
   int i;
   for (i=0; i<NUM_RESERVED; i++) {
     TString *ts = luaS_new(L, token2string[i]);
+    LUA_ASSERT(strlen(token2string[i])+1 <= TOKEN_LEN, "incorrect token_len");
     ts->marked = (unsigned char)(RESERVEDMARK+i);  /* reserved word */
   }
 }
@@ -48,8 +49,8 @@ void luaX_init (lua_State *L) {
 
 void luaX_checklimit (LexState *ls, int val, int limit, const char *msg) {
   if (val > limit) {
-    char buff[100];
-    sprintf(buff, "too many %.50s (limit=%d)", msg, limit);
+    char buff[90];
+    sprintf(buff, "too many %.40s (limit=%d)", msg, limit);
     luaX_error(ls, buff, ls->t.token);
   }
 }

+ 3 - 3
llex.h

@@ -1,5 +1,5 @@
 /*
-** $Id: llex.h,v 1.31 2000/09/27 17:41:58 roberto Exp roberto $
+** $Id: llex.h,v 1.32 2000/12/04 18:33:40 roberto Exp roberto $
 ** Lexical Analyzer
 ** See Copyright Notice in lua.h
 */
@@ -13,8 +13,8 @@
 
 #define FIRST_RESERVED	257
 
-/* maximum length of a reserved word (+1 for final 0) */
-#define TOKEN_LEN	15
+/* maximum length of a reserved word */
+#define TOKEN_LEN	(sizeof("function"))
 
 
 /*

+ 5 - 5
lparser.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lparser.c,v 1.120 2000/12/26 18:46:09 roberto Exp roberto $
+** $Id: lparser.c,v 1.121 2000/12/28 12:55:41 roberto Exp roberto $
 ** LL(1) Parser and code generator for Lua
 ** See Copyright Notice in lua.h
 */
@@ -71,9 +71,9 @@ static void lookahead (LexState *ls) {
 
 
 static void error_expected (LexState *ls, int token) {
-  char buff[100], t[TOKEN_LEN];
+  char buff[30], t[TOKEN_LEN];
   luaX_token2str(token, t);
-  sprintf(buff, "`%.20s' expected", t);
+  sprintf(buff, "`%.10s' expected", t);
   luaK_error(ls, buff);
 }
 
@@ -104,11 +104,11 @@ static void check_match (LexState *ls, int what, int who, int where) {
     if (where == ls->linenumber)
       error_expected(ls, what);
     else {
-      char buff[100];
+      char buff[70];
       char t_what[TOKEN_LEN], t_who[TOKEN_LEN];
       luaX_token2str(what, t_what);
       luaX_token2str(who, t_who);
-      sprintf(buff, "`%.20s' expected (to close `%.20s' at line %d)",
+      sprintf(buff, "`%.10s' expected (to close `%.10s' at line %d)",
               t_what, t_who, where);
       luaK_error(ls, buff);
     }