shithub: MicroHs

Download patch

ref: b4390dafa29297d20f9cf3986786baf1da4faacb
parent: 5307a307eab96ac5bae24418e2bc6b9f258aa9b7
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Mon Nov 20 13:31:46 EST 2023

Add missing stack depth checks.

--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -1946,9 +1946,10 @@
       }
     case T_SEQ:  CHECK(2); eval(ARG(TOP(0))); POP(2); n = TOP(-1); y = ARG(n); GOIND(y); /* seq x y = eval(x); y */
 
-    case T_EQUAL: r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(r==0 ? combTrue : combFalse);
-    case T_COMPARE: //r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); SETINT(n, r); RET;
-      r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(r < 0 ? combLT : r > 0 ? combGT : combEQ);
+    case T_EQUAL:
+      CHECK(2); r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(r==0 ? combTrue : combFalse);
+    case T_COMPARE:
+      CHECK(2); r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(r < 0 ? combLT : r > 0 ? combGT : combEQ);
 
     case T_RNF:
       if (doing_rnf) RET;
--