--- stack/stack.c 2002/02/08 13:01:16 1.63 +++ stack/stack.c 2002/02/08 16:33:14 1.64 @@ -496,13 +496,15 @@ return; } + eval_start: + switch(env->head->item->type) { /* if it's a symbol */ case symb: rcl(env); /* get its contents */ if(env->err) return; if(env->head->item->type!=symb){ /* don't recurse symbols */ - return eval(env); /* evaluate the value */ + goto eval_start; } return; @@ -528,7 +530,7 @@ if(env->err) return; if(iterator->next == NULL){ free_val(temp_val); - return eval(env); + goto eval_start; } eval(env); if(env->err) return; @@ -551,7 +553,7 @@ strcat(temp_string, " ]"); stack_read(env, temp_string); free(temp_string); - return eval(env); + goto eval_start; case integer: return;