diff --git a/luprex/eris-master/src/lapi.c b/luprex/eris-master/src/lapi.c index a7664702..feec81a5 100644 --- a/luprex/eris-master/src/lapi.c +++ b/luprex/eris-master/src/lapi.c @@ -312,6 +312,17 @@ LUA_API void lua_arith (lua_State *L, int op) { lua_unlock(L); } +static int sortorder(int t) { + switch (t) { + case LUA_TNIL: return 0; + case LUA_TNUMBER: return 1; + case LUA_TSTRING: return 2; + case LUA_TBOOLEAN: return 3; + case LUA_TTABLE: return 1000000; + default: return t+1000; + } +} + LUA_API int lua_genlt (lua_State *L, int index1, int index2) { StkId o1, o2; int i = 0; @@ -321,7 +332,7 @@ LUA_API int lua_genlt (lua_State *L, int index1, int index2) { int t1 = ttypenv(o1); int t2 = ttypenv(o2); if (t1 != t2) { - i = (t1 < t2); + i = (sortorder(t1) < sortorder(t2)); } else if (t1 == LUA_TNUMBER) { i = luai_numlt(L, nvalue(o1), nvalue(o2)); } else if (t1 == LUA_TSTRING) {