bc: simplify zdc_parse_string()
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 17 Dec 2018 10:02:26 +0000 (11:02 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 17 Dec 2018 10:02:26 +0000 (11:02 +0100)
function                                             old     new   delta
bc_program_index                                      64      66      +2
zdc_parse_expr                                       671     656     -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 2/-15)             Total: -13 bytes
   text    data     bss     dec     hex filename
 981667     485    7296  989448   f1908 busybox_old
 981655     485    7296  989436   f18fc busybox_unstripped

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

index 58734cf9cac795e6b5f95f28cac2a7744cb6884d..1fb1b00b377741388598b841645c718592e71087 100644 (file)
@@ -4798,8 +4798,6 @@ static BC_STATUS zbc_parse_expr(BcParse *p, uint8_t flags, BcParseNext next)
 
 #if ENABLE_DC
 
-#define DC_PARSE_BUF_LEN ((int) (sizeof(uint32_t) * CHAR_BIT))
-
 static BC_STATUS zdc_parse_register(BcParse *p)
 {
        BcStatus s;
@@ -4816,11 +4814,11 @@ static BC_STATUS zdc_parse_register(BcParse *p)
 
 static BC_STATUS zdc_parse_string(BcParse *p)
 {
-       char *str, *name, b[DC_PARSE_BUF_LEN + 1];
+       char *str, *name;
        size_t idx, len = G.prog.strs.len;
 
-       sprintf(b, "%0*zu", DC_PARSE_BUF_LEN, len);
-       name = xstrdup(b);
+//why pad to 32 zeros??
+       name = xasprintf("%032lu", (unsigned long)len);
 
        str = xstrdup(p->l.t.v.v);
        bc_parse_push(p, BC_INST_STR);