diff options
Diffstat (limited to 'src/lj_carith.c')
-rw-r--r-- | src/lj_carith.c | 6 |
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++) { |