This commit is contained in:
iceman1001 2024-02-04 11:28:22 +01:00
commit d481042480
2 changed files with 6 additions and 0 deletions

View file

@ -131,6 +131,8 @@ TString *luaX_newstring(LexState *ls, const char *str, size_t l) {
table has no metatable, so it does not need to invalidate cache */
setbvalue(o, 1); /* t[string] = true */
luaC_checkGC(L);
} else { /* string already present */
ts = rawtsvalue(keyfromval(o)); /* re-use value previously stored */
}
L->top--; /* remove string from stack */
return ts;

View file

@ -17,6 +17,10 @@
#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 void luaH_setint(lua_State *L, Table *t, int key, TValue *value);