]> git.mxchange.org Git - simgear.git/commitdiff
Melchior found a bug with negative values in default function arguments
authorandy <andy>
Fri, 6 Apr 2007 20:35:38 +0000 (20:35 +0000)
committerandy <andy>
Fri, 6 Apr 2007 20:35:38 +0000 (20:35 +0000)
simgear/nasal/codegen.c

index 1664ca4f77d95d4d2ab1a42479a1bdcf51613f81..a0fcd91bfc3300043ed4cccf00940db11088787c 100644 (file)
@@ -152,6 +152,15 @@ static void genEqOp(int op, struct Parser* p, struct Token* t)
 static int defArg(struct Parser* p, struct Token* t)
 {
     if(t->type == TOK_LPAR) return defArg(p, RIGHT(t));
+    if(t->type == TOK_MINUS && RIGHT(t) && 
+       RIGHT(t)->type == TOK_LITERAL && !RIGHT(t)->str)
+    {
+        /* default arguments are constants, but "-1" parses as two
+         * tokens, so we have to subset the expression generator for that
+         * case */
+        RIGHT(t)->num *= -1;
+        return defArg(p, RIGHT(t));
+    }
     return findConstantIndex(p, t);
 }