bc: shorten bc_program_addFunc()
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 19 Dec 2018 19:05:50 +0000 (20:05 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 19 Dec 2018 19:05:50 +0000 (20:05 +0100)
function                                             old     new   delta
bc_func_init                                           -      50     +50
bc_program_addFunc                                   201     138     -63
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 50/-63)            Total: -13 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/bc.c

index 7fcf00aa90f17ae891332cad16c6f56cf78e11f4..c59d5a2b5320dbe58a569c8d99aa76bcb9f5beca 100644 (file)
@@ -3624,13 +3624,11 @@ static size_t bc_program_addFunc(char *name)
        idx = entry_ptr->idx;
 
        if (!inserted) {
+               // There is already a function with this name.
+               // It'll be redefined now, clear old definition.
                BcFunc *func = bc_program_func(entry_ptr->idx);
-
-               // We need to reset these, so the function can be repopulated.
-               func->nparams = 0;
-               bc_vec_pop_all(&func->autos);
-               bc_vec_pop_all(&func->code);
-               bc_vec_pop_all(&func->labels);
+               bc_func_free(func);
+               bc_func_init(func);
        } else {
                bc_func_init(&f);
                bc_vec_push(&G.prog.fns, &f);