X-Git-Url: https://secure.softndesign.org/git/?a=blobdiff_plain;f=parser.c;h=0359234f352fb4669805cd3162d7aa957784d0c4;hb=523841a1e0785a34286154a46319d9bd435bd8d7;hp=2e83a4f451f74a766e1b70e2b3c2f3567eafdf50;hpb=3d3e6770191a1eb48cf66898397a1a6e31b7cb89;p=calc.git diff --git a/parser.c b/parser.c index 2e83a4f..0359234 100644 --- a/parser.c +++ b/parser.c @@ -675,12 +675,15 @@ double while_do (element_t *cond, element_t *action) VERBOSE (DEBUG, fprintf (stdout, "loop...\n")); temp = dupelement (cond); - if (!evaluate_element (temp, 0)) { + double test = evaluate_element (temp, 0); + delelement (temp); + if (!test) { break; } if (action) { temp = dupelement (action); ret = evaluate_element (temp, 0); + delelement (temp); } } @@ -840,6 +843,7 @@ double call (int id, int nbops, element_t **ops) /* evaluate program */ element_t *elements = dupelement ((programs + n)->root); ret = evaluate_element (elements, 0); + delelement (elements); /* restore context */ answer = tmp.answer;