aboutsummaryrefslogtreecommitdiff
path: root/src/lj_carith.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_carith.c')
-rw-r--r--src/lj_carith.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lj_carith.c b/src/lj_carith.c
index d8b5f91a..1b1786a6 100644
--- a/src/lj_carith.c
+++ b/src/lj_carith.c
@@ -75,7 +75,7 @@ static int carith_checkarg(lua_State *L, CTState *cts, CDArith *ca)
75 ok = 1; 75 ok = 1;
76 } else { 76 } else {
77 ca->ct[1-i] = ct; /* Use enum to improve error message. */ 77 ca->ct[1-i] = ct; /* Use enum to improve error message. */
78 ca->p[1-i] = NULL; 78 ca->p[1-i] = (void *)(intptr_t)1; /* To make it unequal. */
79 break; 79 break;
80 } 80 }
81 } 81 }
@@ -236,7 +236,9 @@ static int lj_carith_meta(lua_State *L, CTState *cts, CDArith *ca, MMS mm)
236 const char *repr[2]; 236 const char *repr[2];
237 int i, isenum = -1, isstr = -1; 237 int i, isenum = -1, isstr = -1;
238 if (mm == MM_eq) { /* Equality checks never raise an error. */ 238 if (mm == MM_eq) { /* Equality checks never raise an error. */
239 setboolV(L->top-1, 0); 239 int eq = ca->p[0] == ca->p[1];
240 setboolV(L->top-1, eq);
241 setboolV(&G(L)->tmptv2, eq); /* Remember for trace recorder. */
240 return 1; 242 return 1;
241 } 243 }
242 for (i = 0; i < 2; i++) { 244 for (i = 0; i < 2; i++) {