Fix math.min and math.max.

Now similar to native Lua and reference: `Returns the argument with the maximum value, according to the Lua operator <. (integer/float) `
This commit is contained in:
Enyby
2018-12-24 20:52:23 +02:00
committed by GitHub
parent 4105cebf1e
commit cfb3aaca61

View File

@@ -196,19 +196,23 @@ public class MathLib extends TwoArgFunction {
static class max extends VarArgFunction { static class max extends VarArgFunction {
public Varargs invoke(Varargs args) { public Varargs invoke(Varargs args) {
double m = args.checkdouble(1); LuaValue m = args.checkvalue(1);
for ( int i=2,n=args.narg(); i<=n; ++i ) for ( int i=2,n=args.narg(); i<=n; ++i ) {
m = Math.max(m,args.checkdouble(i)); LuaValue v = args.checkvalue(i);
return valueOf(m); if (m.lt_b(v)) m = v;
}
return m;
} }
} }
static class min extends VarArgFunction { static class min extends VarArgFunction {
public Varargs invoke(Varargs args) { public Varargs invoke(Varargs args) {
double m = args.checkdouble(1); LuaValue m = args.checkvalue(1);
for ( int i=2,n=args.narg(); i<=n; ++i ) for ( int i=2,n=args.narg(); i<=n; ++i ) {
m = Math.min(m,args.checkdouble(i)); LuaValue v = args.checkvalue(i);
return valueOf(m); if (v.lt_b(m)) m = v;
}
return m;
} }
} }