Просмотр исходного кода

Fix to make math.abs work properly with floats

mingodad 8 лет назад
Родитель
Сommit
ae3de15a76
1 измененных файлов с 12 добавлено и 3 удалено
  1. 12 3
      SquiLu/sqstdlib/sqstdmath.cpp

+ 12 - 3
SquiLu/sqstdlib/sqstdmath.cpp

@@ -80,9 +80,18 @@ static SQRESULT math_random(HSQUIRRELVM v) {
 
 static SQRESULT math_abs(HSQUIRRELVM v)
 {
-	SQInteger n;
-	sq_getinteger(v,2,&n);
-	sq_pushinteger(v,(SQInteger)abs((int)n));
+	if(sq_gettype(v,2) == OT_INTEGER)
+    {
+        SQInteger n;
+        sq_getinteger(v,2,&n);
+        sq_pushinteger(v,(SQInteger)abs(n));
+    }
+    else
+    {
+        SQFloat n;
+        sq_getfloat(v,2,&n);
+        sq_pushfloat(v,abs(n));
+    }
 	return 1;
 }