#include "parser.h"
#include "stack.h"
#include "storage.h"
+#include "tabular.h"
#include "program.h"
free ((programs + n)->storage);
}
if ((programs + n)->stack) {
- free ((programs + n)->stack);
+ free_tab ((programs + n)->stack);
}
if ((programs + n)->root) {
delelement ((programs + n)->root);
(programs + n)->storage = NULL;
(programs + n)->storage_size = 0;
(programs + n)->stack = NULL;
- (programs + n)->stack_size = 0;
(programs + n)->root = dupelement (root);
}
tmp.storage = storage;
tmp.storage_size = storage_size;
tmp.stack = stack;
- tmp.stack_size = stack_size;
/* change context */
answer = 0;
argument = NULL;
argument_size = 0;
stack = (programs + n)->stack;
- stack_size = (programs + n)->stack_size;
if (nbargs > 0) {
argument = (double *) callocordie (nbargs, sizeof (double));
for (i = 0, l = 0; i < nbargs; l++) {
free (argument);
}
(programs + n)->stack = stack;
- (programs + n)->stack_size = stack_size;
/* restore context */
answer = tmp.answer;
argument = tmp.argument;
argument_size = tmp.argument_size;
stack = tmp.stack;
- stack_size = tmp.stack_size;
return ret;
}
free ((programs + n)->storage);
}
if ((programs + n)->stack) {
- free ((programs + n)->stack);
+ free_tab ((programs + n)->stack);
}
if ((programs + n)->root) {
delelement ((programs + n)->root);