diff --git a/src/blua/lvm.c b/src/blua/lvm.c index 46a015c1eb254bc86a59d726d041e5b6461e30d2..df0acb37ed3f8040d270aab3e27dec0e7c7a6490 100644 --- a/src/blua/lvm.c +++ b/src/blua/lvm.c @@ -541,11 +541,14 @@ void luaV_execute (lua_State *L, int nexeccalls) { continue; } case OP_BNOT: { - TValue *rb = RB(i); + TValue *rb = RKB(i); if (ttisnumber(rb)) { lua_Number nb = nvalue(rb); setnvalue(ra, luai_numnot(nb)); } + else if (ttisboolean(rb) || ttisnil(rb)) { + setbvalue(ra, l_isfalse(rb)); + } else { Protect(Arith(L, ra, rb, rb, TM_NOT)); }