aboutsummaryrefslogtreecommitdiff
path: root/lcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'lcode.c')
-rw-r--r--lcode.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lcode.c b/lcode.c
index 18bf9413..2c57fdaf 100644
--- a/lcode.c
+++ b/lcode.c
@@ -541,11 +541,12 @@ static void freeexps (FuncState *fs, expdesc *e1, expdesc *e2) {
541** a function can make some indices wrong. 541** a function can make some indices wrong.
542*/ 542*/
543static int addk (FuncState *fs, TValue *key, TValue *v) { 543static int addk (FuncState *fs, TValue *key, TValue *v) {
544 TValue val;
544 lua_State *L = fs->ls->L; 545 lua_State *L = fs->ls->L;
545 Proto *f = fs->f; 546 Proto *f = fs->f;
546 TValue val = luaH_get(fs->ls->h, key); /* query scanner table */ 547 int tag = luaH_get(fs->ls->h, key, &val); /* query scanner table */
547 int k, oldsize; 548 int k, oldsize;
548 if (ttisintegerV(val)) { /* is there an index there? */ 549 if (tag == LUA_VNUMINT) { /* is there an index there? */
549 k = cast_int(ivalue(&val)); 550 k = cast_int(ivalue(&val));
550 /* correct value? (warning: must distinguish floats from integers!) */ 551 /* correct value? (warning: must distinguish floats from integers!) */
551 if (k < fs->nk && ttypetag(&f->k[k]) == ttypetag(v) && 552 if (k < fs->nk && ttypetag(&f->k[k]) == ttypetag(v) &&