]> git.mxchange.org Git - simgear.git/commitdiff
Fix boolean semantics so that the empty string evaluates to false, and
authorandy <andy>
Wed, 30 Mar 2005 18:45:01 +0000 (18:45 +0000)
committerandy <andy>
Wed, 30 Mar 2005 18:45:01 +0000 (18:45 +0000)
numeric strings are false if their numeric values are false.

simgear/nasal/code.c

index 388c4eae3ce391ce1fcca0b390f3d9092ebe108b..d5428364f9fc15ed4864a2d303283f4b2d1eb0a9 100644 (file)
@@ -27,11 +27,16 @@ void naRuntimeError(struct Context* c, char* msg)
     longjmp(c->jumpHandle, 1);
 }
 
-int boolify(struct Context* ctx, naRef r)
+static int boolify(struct Context* ctx, naRef r)
 {
-    if(IS_NIL(r)) return 0;
     if(IS_NUM(r)) return r.num != 0;
-    if(IS_STR(r)) return 1;
+    if(IS_NIL(r)) return 0;
+    if(IS_STR(r)) {
+        double d;
+        if(naStr_len(r) == 0) return 0;
+        if(naStr_tonum(r, &d)) return d != 0;
+        else return 1;
+    }
     ERR(ctx, "non-scalar used in boolean context");
     return 0;
 }