diff --git a/src/main/java/lua/CallFrame.java b/src/main/java/lua/CallFrame.java index 8e6ad251..fee223e7 100644 --- a/src/main/java/lua/CallFrame.java +++ b/src/main/java/lua/CallFrame.java @@ -223,7 +223,7 @@ public class CallFrame { rkb = GETARG_RKB(i); rkc = GETARG_RKC(i); boolean test = rkc.luaBinCmpUnknown(o, rkb); - if (test) + if (test == (a == 0)) pc++; continue; } diff --git a/src/test/java/lua/LuaJTest.java b/src/test/java/lua/LuaJTest.java index dd15cc1b..c7c64529 100644 --- a/src/test/java/lua/LuaJTest.java +++ b/src/test/java/lua/LuaJTest.java @@ -43,6 +43,10 @@ public class LuaJTest extends TestCase { runTest( "test7" ); } + public void testCompare() throws IOException, InterruptedException { + runTest( "compare" ); + } + public void testUpvalues() throws IOException, InterruptedException { runTest( "upvalues" ); } diff --git a/src/test/res/compare.lua b/src/test/res/compare.lua new file mode 100644 index 00000000..6840009b --- /dev/null +++ b/src/test/res/compare.lua @@ -0,0 +1,12 @@ +if 2 < 5 then + print("OK!") +else + print("Something is not right") +end + +print(2 < 5) +print(2 <= 5) +print(2 == 5) +print(2 ~= 5) +print(2 > 5) +print(2 >= 5) diff --git a/src/test/res/compare.luac b/src/test/res/compare.luac new file mode 100644 index 00000000..a4acc295 Binary files /dev/null and b/src/test/res/compare.luac differ