test
[calc.git] / program.c
index dc433aa57ec969f2111aae27f46c526e325cdf73..a6801f8a48574ed34a003ed5451e1ef8e6a35ea7 100644 (file)
--- a/program.c
+++ b/program.c
@@ -81,22 +81,25 @@ double call (int id, int nbargs, element_t **args)
         VERBOSE (WARNING, fprintf (stdout, "error unknown program (%d)\n", id));
         return 0;
     }
+    VERBOSE (DEBUG, fprintf (stdout, "id -> n; %d -> %d\n", id, n));
 
-    /* backup context */
-    workspace_t *tmp = backup_ws (alloc_ws ());
-    restore_ws (programs[n]);
-    
     /* set arguments */
     free_tab (argument);
     argument = NULL;
+    VERBOSE (DEBUG, fprintf (stdout, "nbargs; %d\n", nbargs));
     if (nbargs > 0) {
         def (nbargs, args);
     }
 
+    /* backup context */
+    workspace_t *tmp = backup_ws (alloc_ws ());
+    restore_ws (programs[n]);
+
     /* evaluate program */
     answer = 0;
     element_t *elements = dupelement (programs[n]->root);
     ret = evaluate_element (elements, 0);
+    VERBOSE (DEBUG, fprintf (stdout, "ret; %g\n", ret));
     delelement (elements);
 
     /* clean arguments */