bc: code shrink

function                                             old     new   delta
bc_program_name                                       67      63      -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-4)               Total: -4 bytes
   text	   data	    bss	    dec	    hex	filename
 981372	    485	   7296	 989153	  f17e1	busybox_old
 981368	    485	   7296	 989149	  f17dd	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 40bb299..eba8aa2 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -5174,17 +5174,19 @@
 static char *bc_program_name(char *code, size_t *bgn)
 {
 	size_t i;
-	char *s, *str = code + *bgn, *ptr = strchr(str, BC_PARSE_STREND);
+	char *s;
 
-	s = xmalloc(ptr - str + 1);
+	code += *bgn;
+	s = xmalloc(strchr(code, BC_PARSE_STREND) - code + 1);
 	i = 0;
 	for (;;) {
-		char c = code[(*bgn)++];
-		if (c == '\0' || c == BC_PARSE_STREND)
+		char c = *code++;
+		if (c == BC_PARSE_STREND)
 			break;
 		s[i++] = c;
 	}
 	s[i] = '\0';
+	*bgn += i + 1;
 
 	return s;
 }