diff options
-rw-r--r-- | evaluator.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/evaluator.c b/evaluator.c index 134e395..214de3e 100644 --- a/evaluator.c +++ b/evaluator.c @@ -1,4 +1,4 @@ -/* $Id: evaluator.c,v 1.16 2004/03/08 04:33:08 reinelt Exp $ +/* $Id: evaluator.c,v 1.17 2004/03/08 18:45:52 hejl Exp $ * * expression evaluation * @@ -23,6 +23,9 @@ * * * $Log: evaluator.c,v $ + * Revision 1.17 2004/03/08 18:45:52 hejl + * fixed segfault when using string concatenation + * * Revision 1.16 2004/03/08 04:33:08 reinelt * string concatenation fixed * @@ -991,7 +994,7 @@ static int EvalTree (NODE *Root) i = Root->Children-1; type = Root->Child[i]->Result->type; number = Root->Child[i]->Result->number; - string = Root->Child[i]->Result->string; + string = strdup(Root->Child[i]->Result->string); break; case O_SET: // variable assignment @@ -999,14 +1002,14 @@ static int EvalTree (NODE *Root) Root->Variable->value = DupResult (Root->Child[0]->Result); type = Root->Child[0]->Result->type; number = Root->Child[0]->Result->number; - string = Root->Child[0]->Result->string; + string = strdup(Root->Child[0]->Result->string); break; case O_CND: // conditional expression i = 1+(R2N(Root->Child[0]->Result) == 0.0); type = Root->Child[i]->Result->type; number = Root->Child[i]->Result->number; - string = Root->Child[i]->Result->string; + string = strdup(Root->Child[i]->Result->string); break; case O_OR: // logical OR |