]> git.mxchange.org Git - simgear.git/commitdiff
Fix Nasal math.clamp()
authorTorsten Dreyer <torsten@t3r.de>
Mon, 2 May 2016 19:57:35 +0000 (21:57 +0200)
committerRoland Haeder <roland@mxchange.org>
Sat, 13 Aug 2016 08:21:16 +0000 (10:21 +0200)
Thanks to "Red Leader" from the forum for spotting

simgear/nasal/mathlib.c

index f2434b3cfe1dafe38cdfeba827716d8b91c1dc66..564168c5fdefeed8c86f9a858cd5dde57de3e397 100644 (file)
@@ -117,15 +117,14 @@ static naRef f_fmod(naContext c, naRef me, int argc, naRef* args)
 static naRef f_clamp(naContext c, naRef me, int argc, naRef* args)
 {
     naRef a = naNumValue(argc > 0 ? args[0] : naNil());
-    naRef b = naNumValue(argc > 1 ? args[1] : naNil());
-    naRef x = naNumValue(argc > 2 ? args[2] : naNil());
+    naRef min = naNumValue(argc > 1 ? args[1] : naNil());
+    naRef max = naNumValue(argc > 2 ? args[2] : naNil());
     
-    if(naIsNil(a) || naIsNil(b) || naIsNil(x))
+    if(naIsNil(a) || naIsNil(min) || naIsNil(max))
         naRuntimeError(c, "non numeric arguments to clamp()");
-    
-    if (a.num < b.num) b.num = a.num;
-    if (b.num > x.num) b.num = x.num;
-    return VALIDATE(b);
+
+    a.num = a.num < min.num ? min.num : ( a.num > max.num ? max.num : a.num );
+    return VALIDATE(a);
 }
 
 static naRef f_periodic(naContext c, naRef me, int argc, naRef* args)