diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ltm.js | 6 | ||||
| -rw-r--r-- | src/lvm.js | 14 | 
2 files changed, 9 insertions, 11 deletions
@@ -159,11 +159,11 @@ const luaT_trybinTM = function(L, p1, p2, res, event) {  };  const luaT_callorderTM = function(L, p1, p2, event) { -    let res = new lobject.TValue(CT.LUA_TNIL, null); +    let res = new lobject.TValue();      if (!luaT_callbinTM(L, p1, p2, res, event)) -        return -1; +        return null;      else -        return res.l_isfalse() ? 0 : 1; +        return !res.l_isfalse();  };  const fasttm = function(l, et, e) { @@ -752,31 +752,29 @@ const luaV_lessthan = function(L, l, r) {          return l_strcmp(l.tsvalue(), r.tsvalue()) < 0 ? 1 : 0;      else {          let res = ltm.luaT_callorderTM(L, l, r, ltm.TMS.TM_LT); -        if (res < 0) +        if (res === null)              ldebug.luaG_ordererror(L, l, r);          return res ? 1 : 0;      }  };  const luaV_lessequal = function(L, l, r) { -    let res; -      if (l.ttisnumber() && r.ttisnumber())          return LEnum(l, r) ? 1 : 0;      else if (l.ttisstring() && r.ttisstring())          return l_strcmp(l.tsvalue(), r.tsvalue()) <= 0 ? 1 : 0;      else { -        res = ltm.luaT_callorderTM(L, l, r, ltm.TMS.TM_LE); -        if (res >= 0) +        let res = ltm.luaT_callorderTM(L, l, r, ltm.TMS.TM_LE); +        if (res !== null)              return res ? 1 : 0;      }      /* try 'lt': */      L.ci.callstatus |= lstate.CIST_LEQ; /* mark it is doing 'lt' for 'le' */ -    res = ltm.luaT_callorderTM(L, r, l, ltm.TMS.TM_LT); +    let res = ltm.luaT_callorderTM(L, r, l, ltm.TMS.TM_LT);      L.ci.callstatus ^= lstate.CIST_LEQ; /* clear mark */ -    if (res < 0) +    if (res === null)          ldebug.luaG_ordererror(L, l, r); -    return res !== 1 ? 1 : 0; /* result is negated */ +    return res ? 0 : 1; /* result is negated */  };  const luaV_equalobj = function(L, t1, t2) {  | 
