diff --git a/src/ltable.c b/src/ltable.c index 40ed1f6..c187306 100644 --- a/src/ltable.c +++ b/src/ltable.c @@ -957,10 +957,22 @@ static int hashkeyisempty (Table *t, lua_Unsigned key) { static lu_byte finishnodeget (const TValue *val, TValue *res) { +#ifdef USE_YK + lu_byte rawtag = rawtt(val); + lu_byte tag = withvariant(rawtag); + if (!tagisempty(tag)) { + res->value_ = val->value_; + settt_(res, rawtag); + checkliveness(((lua_State*)NULL), res); + lua_assert(!isnonstrictnil(res)); + } + return tag; +#else if (!ttisnil(val)) { setobj(((lua_State*)NULL), res, val); } return ttypetag(val); +#endif } diff --git a/src/lvm.c b/src/lvm.c index f9dcee9..b221aeb 100644 --- a/src/lvm.c +++ b/src/lvm.c @@ -1190,7 +1190,7 @@ GCObject *load_gcobj(const TValue *o) { #endif #define RC(i) (base+GETARG_C(i)) #define vRC(i) s2v(RC(i)) -#define RKC(i) ((TESTARG_k(i)) ? k + GETARG_C(i) : s2v(base + GETARG_C(i))) +#define RKC(i) ((TESTARG_k(i)) ? KC(i) : s2v(base + GETARG_C(i)))