From 42c72b7b0d9c1b6910dd5b845dab21366a3cde92 Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Fri, 20 Nov 2020 19:17:32 -0800
Subject: [PATCH] Lua: fix crash with unary not (~) on boolean constant/nil and
 let it work on boolean/nil values in general

---
 src/blua/lvm.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/blua/lvm.c b/src/blua/lvm.c
index 46a015c1eb..df0acb37ed 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));
         }
-- 
GitLab