mirror of
https://github.com/lua/lua
synced 2024-11-28 23:53:16 +03:00
BUG: GC can collect a long string still in use during parser
This commit is contained in:
parent
42cf5f8214
commit
c23f705349
5
llex.c
5
llex.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: llex.c,v 2.63 2013/03/16 21:10:18 roberto Exp $
|
** $Id: llex.c,v 2.63.1.1 2013/04/12 18:48:47 roberto Exp roberto $
|
||||||
** Lexical Analyzer
|
** Lexical Analyzer
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@ -133,6 +133,9 @@ TString *luaX_newstring (LexState *ls, const char *str, size_t l) {
|
|||||||
setbvalue(o, 1); /* t[string] = true */
|
setbvalue(o, 1); /* t[string] = true */
|
||||||
luaC_checkGC(L);
|
luaC_checkGC(L);
|
||||||
}
|
}
|
||||||
|
else { /* string already present */
|
||||||
|
ts = rawtsvalue(keyfromval(o)); /* re-use value previously stored */
|
||||||
|
}
|
||||||
L->top--; /* remove string from stack */
|
L->top--; /* remove string from stack */
|
||||||
return ts;
|
return ts;
|
||||||
}
|
}
|
||||||
|
6
ltable.h
6
ltable.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ltable.h,v 2.16 2011/08/17 20:26:47 roberto Exp $
|
** $Id: ltable.h,v 2.16.1.1 2013/04/12 18:48:47 roberto Exp roberto $
|
||||||
** Lua tables (hash)
|
** Lua tables (hash)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@ -17,6 +17,10 @@
|
|||||||
|
|
||||||
#define invalidateTMcache(t) ((t)->flags = 0)
|
#define invalidateTMcache(t) ((t)->flags = 0)
|
||||||
|
|
||||||
|
/* returns the key, given the value of a table entry */
|
||||||
|
#define keyfromval(v) \
|
||||||
|
(gkey(cast(Node *, cast(char *, (v)) - offsetof(Node, i_val))))
|
||||||
|
|
||||||
|
|
||||||
LUAI_FUNC const TValue *luaH_getint (Table *t, int key);
|
LUAI_FUNC const TValue *luaH_getint (Table *t, int key);
|
||||||
LUAI_FUNC void luaH_setint (lua_State *L, Table *t, int key, TValue *value);
|
LUAI_FUNC void luaH_setint (lua_State *L, Table *t, int key, TValue *value);
|
||||||
|
Loading…
Reference in New Issue
Block a user