correct a memory leak
authorMazet Laurent <mazet@softndesign.org>
Wed, 1 Feb 2023 22:44:26 +0000 (23:44 +0100)
committerMazet Laurent <mazet@softndesign.org>
Wed, 1 Feb 2023 22:44:26 +0000 (23:44 +0100)
parser.c

index 2e83a4f451f74a766e1b70e2b3c2f3567eafdf50..0359234f352fb4669805cd3162d7aa957784d0c4 100644 (file)
--- 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;