aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/bc.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 0bbd53a65..ec3560c2b 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -378,7 +378,6 @@ typedef struct BcResult {
typedef struct BcInstPtr {
size_t func;
size_t inst_idx;
- IF_BC(size_t results_len_before_call;)
} BcInstPtr;
typedef enum BcLexType {
@@ -5311,7 +5310,6 @@ static BC_STATUS zxc_program_read(void)
ip.func = BC_PROG_READ;
ip.inst_idx = 0;
- IF_BC(ip.results_len_before_call = G.prog.results.len;)
bc_vec_push(&G.prog.exestack, &ip);
exec_err:
@@ -5971,7 +5969,6 @@ static BC_STATUS zbc_program_call(char *code, size_t *idx)
RETURN_STATUS(bc_error_fmt("function has %u parameters, but called with %u", func->nparams, nparams));
}
ip.inst_idx = 0;
- ip.results_len_before_call = G.prog.results.len - nparams;
for (i = 0; i < nparams; ++i) {
BcResult *arg;
@@ -6019,11 +6016,6 @@ static BC_STATUS zbc_program_return(char inst)
size_t i;
BcInstPtr *ip = bc_vec_top(&G.prog.exestack);
-#if SANITY_CHECKS
- if (!STACK_HAS_EQUAL_OR_MORE_THAN(&G.prog.results, ip->results_len_before_call + (inst == XC_INST_RET)))
- RETURN_STATUS(bc_error_stack_has_too_few_elements());
-#endif
-
if (inst == XC_INST_RET) {
BcStatus s;
BcNum *num;
@@ -6033,6 +6025,7 @@ static BC_STATUS zbc_program_return(char inst)
if (s) RETURN_STATUS(s);
bc_num_init(&res.d.n, num->len);
bc_num_copy(&res.d.n, num);
+ bc_vec_pop(&G.prog.results);
//} else if (f->void_func) {
//prepare "void" result in res
} else {
@@ -6040,8 +6033,6 @@ static BC_STATUS zbc_program_return(char inst)
//bc_num_zero(&res.d.n); - already is
}
res.t = XC_RESULT_TEMP;
-
- bc_vec_npop(&G.prog.results, G.prog.results.len - ip->results_len_before_call);
bc_vec_push(&G.prog.results, &res);
bc_vec_pop(&G.prog.exestack);