From 3f940c9c707904df545c148065f720d33e805aed Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 18 Dec 2018 15:49:42 +0100 Subject: [PATCH] bc: shrink bc_program_index() function old new delta bc_program_index 66 47 -19 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-19) Total: -19 bytes text data bss dec hex filename 981418 485 7296 989199 f180f busybox_old 981399 485 7296 989180 f17fc busybox_unstripped Signed-off-by: Denys Vlasenko --- miscutils/bc.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/miscutils/bc.c b/miscutils/bc.c index eaa28a94a..2da7c317c 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -5256,11 +5256,18 @@ exec_err: static size_t bc_program_index(char *code, size_t *bgn) { - char amt = code[(*bgn)++], i = 0; - size_t res = 0; + unsigned char *bytes = (void*)(code + *bgn); + unsigned amt; + unsigned i; + size_t res; - for (; i < amt; ++i, ++(*bgn)) - res |= (((size_t)((int) code[*bgn]) & UCHAR_MAX) << (i * CHAR_BIT)); + amt = *bytes++; + *bgn += amt + 1; + + amt *= 8; + res = 0; + for (i = 0; i < amt; i += 8) + res |= (size_t)(*bytes++) << i; return res; }