mirror of
https://github.com/lua/lua
synced 2024-11-22 21:01:26 +03:00
small changes in error recovery
This commit is contained in:
parent
8a0521fa52
commit
ff7f769454
55
table.c
55
table.c
@ -3,7 +3,7 @@
|
|||||||
** Module to control static tables
|
** Module to control static tables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_table="$Id: table.c,v 2.13 1994/11/08 20:07:54 roberto Exp $";
|
char *rcs_table="$Id: table.c,v 2.14 1994/11/09 18:11:47 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -50,10 +50,7 @@ static void lua_initsymbol (void)
|
|||||||
lua_maxsymbol = BUFFER_BLOCK;
|
lua_maxsymbol = BUFFER_BLOCK;
|
||||||
lua_table = (Symbol *) calloc(lua_maxsymbol, sizeof(Symbol));
|
lua_table = (Symbol *) calloc(lua_maxsymbol, sizeof(Symbol));
|
||||||
if (lua_table == NULL)
|
if (lua_table == NULL)
|
||||||
{
|
lua_error ("symbol table: not enough memory");
|
||||||
lua_error ("symbol table: not enough memory");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
n = lua_findsymbol("next");
|
n = lua_findsymbol("next");
|
||||||
s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = lua_next;
|
s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = lua_next;
|
||||||
n = lua_findsymbol("nextvar");
|
n = lua_findsymbol("nextvar");
|
||||||
@ -98,27 +95,16 @@ int lua_findsymbol (char *s)
|
|||||||
if (lua_table == NULL)
|
if (lua_table == NULL)
|
||||||
lua_initsymbol();
|
lua_initsymbol();
|
||||||
n = lua_varcreate(s);
|
n = lua_varcreate(s);
|
||||||
if (n == NULL)
|
|
||||||
{
|
|
||||||
lua_error ("create symbol: not enough memory");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (indexstring(n) == UNMARKED_STRING)
|
if (indexstring(n) == UNMARKED_STRING)
|
||||||
{
|
{
|
||||||
if (lua_ntable == lua_maxsymbol)
|
if (lua_ntable == lua_maxsymbol)
|
||||||
{
|
{
|
||||||
lua_maxsymbol *= 2;
|
lua_maxsymbol *= 2;
|
||||||
if (lua_maxsymbol > MAX_WORD)
|
if (lua_maxsymbol > MAX_WORD)
|
||||||
{
|
lua_error("symbol table overflow");
|
||||||
lua_error("symbol table overflow");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
lua_table = (Symbol *)realloc(lua_table, lua_maxsymbol*sizeof(Symbol));
|
lua_table = (Symbol *)realloc(lua_table, lua_maxsymbol*sizeof(Symbol));
|
||||||
if (lua_table == NULL)
|
if (lua_table == NULL)
|
||||||
{
|
lua_error ("symbol table: not enough memory");
|
||||||
lua_error ("symbol table: not enough memory");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
indexstring(n) = lua_ntable;
|
indexstring(n) = lua_ntable;
|
||||||
s_tag(lua_ntable) = LUA_T_NIL;
|
s_tag(lua_ntable) = LUA_T_NIL;
|
||||||
@ -139,27 +125,16 @@ int lua_findconstant (char *s)
|
|||||||
if (lua_constant == NULL)
|
if (lua_constant == NULL)
|
||||||
lua_initconstant();
|
lua_initconstant();
|
||||||
n = lua_constcreate(s);
|
n = lua_constcreate(s);
|
||||||
if (n == NULL)
|
|
||||||
{
|
|
||||||
lua_error ("create constant: not enough memory");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (indexstring(n) == UNMARKED_STRING)
|
if (indexstring(n) == UNMARKED_STRING)
|
||||||
{
|
{
|
||||||
if (lua_nconstant == lua_maxconstant)
|
if (lua_nconstant == lua_maxconstant)
|
||||||
{
|
{
|
||||||
lua_maxconstant *= 2;
|
lua_maxconstant *= 2;
|
||||||
if (lua_maxconstant > MAX_WORD)
|
if (lua_maxconstant > MAX_WORD)
|
||||||
{
|
lua_error("constant table overflow");
|
||||||
lua_error("constant table overflow");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
lua_constant = (char**)realloc(lua_constant,lua_maxconstant*sizeof(char*));
|
lua_constant = (char**)realloc(lua_constant,lua_maxconstant*sizeof(char*));
|
||||||
if (lua_constant == NULL)
|
if (lua_constant == NULL)
|
||||||
{
|
lua_error ("constant table: not enough memory");
|
||||||
lua_error ("constant table: not enough memory");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
indexstring(n) = lua_nconstant;
|
indexstring(n) = lua_nconstant;
|
||||||
lua_constant[lua_nconstant] = n;
|
lua_constant[lua_nconstant] = n;
|
||||||
@ -267,22 +242,18 @@ void lua_nextvar (void)
|
|||||||
char *varname, *next;
|
char *varname, *next;
|
||||||
lua_Object o = lua_getparam(1);
|
lua_Object o = lua_getparam(1);
|
||||||
if (o == 0)
|
if (o == 0)
|
||||||
{ lua_error ("too few arguments to function `nextvar'"); return; }
|
lua_error ("too few arguments to function `nextvar'");
|
||||||
if (lua_getparam(2) != NULL)
|
if (lua_getparam(2) != NULL)
|
||||||
{ lua_error ("too many arguments to function `nextvar'"); return; }
|
lua_error ("too many arguments to function `nextvar'");
|
||||||
if (lua_isnil(o))
|
if (lua_isnil(o))
|
||||||
{
|
varname = NULL;
|
||||||
varname = NULL;
|
|
||||||
}
|
|
||||||
else if (!lua_isstring(o))
|
else if (!lua_isstring(o))
|
||||||
{
|
{
|
||||||
lua_error ("incorrect argument to function `nextvar'");
|
lua_error ("incorrect argument to function `nextvar'");
|
||||||
return;
|
return; /* to avoid warnings */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
varname = lua_getstring(o);
|
||||||
varname = lua_getstring(o);
|
|
||||||
}
|
|
||||||
next = lua_varnext(varname);
|
next = lua_varnext(varname);
|
||||||
if (next == NULL)
|
if (next == NULL)
|
||||||
{
|
{
|
||||||
|
4
tree.c
4
tree.c
@ -3,7 +3,7 @@
|
|||||||
** TecCGraf - PUC-Rio
|
** TecCGraf - PUC-Rio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_tree="$Id: tree.c,v 1.1 1994/07/19 21:24:17 celes Exp $";
|
char *rcs_tree="$Id: tree.c,v 1.2 1994/10/18 17:36:11 celes Exp roberto $";
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -38,7 +38,7 @@ static char *tree_create (TreeNode **node, char *str, int *created)
|
|||||||
{
|
{
|
||||||
*node = (TreeNode *) malloc (sizeof(TreeNode)+strlen(str));
|
*node = (TreeNode *) malloc (sizeof(TreeNode)+strlen(str));
|
||||||
if (*node == NULL)
|
if (*node == NULL)
|
||||||
lua_error ("memoria insuficiente\n");
|
lua_error("not enough memory");
|
||||||
(*node)->left = (*node)->right = NULL;
|
(*node)->left = (*node)->right = NULL;
|
||||||
strcpy((*node)->str, str);
|
strcpy((*node)->str, str);
|
||||||
(*node)->index = UNMARKED_STRING;
|
(*node)->index = UNMARKED_STRING;
|
||||||
|
Loading…
Reference in New Issue
Block a user