diff options
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/bc.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index f936ad6f3..3d53db778 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
| @@ -1069,8 +1069,12 @@ static void bc_vec_expand(BcVec *v, size_t req) | |||
| 1069 | } | 1069 | } |
| 1070 | } | 1070 | } |
| 1071 | 1071 | ||
| 1072 | #define bc_vec_pop(v) (bc_vec_npop((v), 1)) | 1072 | static void bc_vec_pop(BcVec *v) |
| 1073 | #define bc_vec_top(v) (bc_vec_item_rev((v), 0)) | 1073 | { |
| 1074 | v->len--; | ||
| 1075 | if (v->dtor) | ||
| 1076 | v->dtor(v->v + (v->size * v->len)); | ||
| 1077 | } | ||
| 1074 | 1078 | ||
| 1075 | static void bc_vec_npop(BcVec *v, size_t n) | 1079 | static void bc_vec_npop(BcVec *v, size_t n) |
| 1076 | { | 1080 | { |
| @@ -1094,8 +1098,6 @@ static void bc_vec_push(BcVec *v, const void *data) | |||
| 1094 | v->len += 1; | 1098 | v->len += 1; |
| 1095 | } | 1099 | } |
| 1096 | 1100 | ||
| 1097 | #define bc_parse_push(p, i) bc_vec_pushByte(&(p)->func->code, (char) (i)) | ||
| 1098 | |||
| 1099 | static void bc_vec_pushByte(BcVec *v, char data) | 1101 | static void bc_vec_pushByte(BcVec *v, char data) |
| 1100 | { | 1102 | { |
| 1101 | bc_vec_push(v, &data); | 1103 | bc_vec_push(v, &data); |
| @@ -1159,6 +1161,11 @@ static void *bc_vec_item_rev(const BcVec *v, size_t idx) | |||
| 1159 | return v->v + v->size * (v->len - idx - 1); | 1161 | return v->v + v->size * (v->len - idx - 1); |
| 1160 | } | 1162 | } |
| 1161 | 1163 | ||
| 1164 | static void *bc_vec_top(const BcVec *v) | ||
| 1165 | { | ||
| 1166 | return v->v + v->size * (v->len - 1); | ||
| 1167 | } | ||
| 1168 | |||
| 1162 | static void bc_vec_free(void *vec) | 1169 | static void bc_vec_free(void *vec) |
| 1163 | { | 1170 | { |
| 1164 | BcVec *v = (BcVec *) vec; | 1171 | BcVec *v = (BcVec *) vec; |
| @@ -3530,6 +3537,8 @@ static void bc_parse_addFunc(BcParse *p, char *name, size_t *idx) | |||
| 3530 | p->func = bc_vec_item(&G.prog.fns, p->fidx); | 3537 | p->func = bc_vec_item(&G.prog.fns, p->fidx); |
| 3531 | } | 3538 | } |
| 3532 | 3539 | ||
| 3540 | #define bc_parse_push(p, i) bc_vec_pushByte(&(p)->func->code, (char) (i)) | ||
| 3541 | |||
| 3533 | static void bc_parse_pushName(BcParse *p, char *name) | 3542 | static void bc_parse_pushName(BcParse *p, char *name) |
| 3534 | { | 3543 | { |
| 3535 | size_t i = 0, len = strlen(name); | 3544 | size_t i = 0, len = strlen(name); |
