Soft'N'Design Software
/
projects
/
calc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
partial recursivity 2
[calc.git]
/
program.c
diff --git
a/program.c
b/program.c
index dc433aa57ec969f2111aae27f46c526e325cdf73..1e960f728641a02a44c5f660600031403ae28f3d 100644
(file)
--- a/
program.c
+++ b/
program.c
@@
-82,31
+82,38
@@
double call (int id, int nbargs, element_t **args)
return 0;
}
return 0;
}
+ /* set arguments */
+ VERBOSE (DEBUG, fprintf (stdout, "1 arg[0]: %g\n", get_tab (argument, 1)));
+ tab_t *old_argument = copy_tab (argument);
+
/* backup context */
workspace_t *tmp = backup_ws (alloc_ws ());
restore_ws (programs[n]);
/* backup context */
workspace_t *tmp = backup_ws (alloc_ws ());
restore_ws (programs[n]);
-
+ VERBOSE (DEBUG, fprintf (stdout, "2 arg[0]: %g\n", get_tab (argument, 1)));
+
/* set arguments */
/* set arguments */
- free_tab (argument);
- argument = NULL;
- if (nbargs > 0) {
- def (nbargs, args);
- }
+ argument = def (nbargs, args);
+ VERBOSE (DEBUG, fprintf (stdout, "3 arg[0]: %g\n", get_tab (argument, 1)));
/* evaluate program */
answer = 0;
element_t *elements = dupelement (programs[n]->root);
/* evaluate program */
answer = 0;
element_t *elements = dupelement (programs[n]->root);
+ VERBOSE (DEBUG, fprintf (stdout, "4 arg[0]: %g\n", get_tab (argument, 1)));
ret = evaluate_element (elements, 0);
ret = evaluate_element (elements, 0);
+ VERBOSE (DEBUG, fprintf (stdout, "ret; %g\n", ret));
+ VERBOSE (DEBUG, fprintf (stdout, "5 arg[0]: %g\n", get_tab (argument, 1)));
delelement (elements);
delelement (elements);
- /* clean arguments */
- free_tab (argument);
- argument = NULL;
-
/* restore context */
backup_ws (programs[n]);
restore_ws (tmp);
free_ws (tmp);
/* restore context */
backup_ws (programs[n]);
restore_ws (tmp);
free_ws (tmp);
+ VERBOSE (DEBUG, fprintf (stdout, "6 arg[0]: %g\n", get_tab (argument, 1)));
+
+ /* clean arguments */
+ free_tab (argument);
+ argument = old_argument;
+ VERBOSE (DEBUG, fprintf (stdout, "7 arg[0]: %g\n", get_tab (argument, 1)));
return ret;
}
return ret;
}