[git commit] bc: simplify bc_program_print()

Denys Vlasenko vda.linux at googlemail.com
Mon Dec 10 11:33:40 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=44d79d866dc4c9bb0c3bba47612feae78365a046
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
bc_program_print                                     730     713     -17

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/bc.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/miscutils/bc.c b/miscutils/bc.c
index 33abe9366..1879581e3 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -5737,15 +5737,14 @@ static BcStatus bc_program_print(char inst, size_t idx)
 {
 	BcStatus s = BC_STATUS_SUCCESS;
 	BcResult *r;
-	size_t len, i;
-	char *str;
-	BcNum *num = NULL;
+	BcNum *num;
 	bool pop = inst != BC_INST_PRINT;
 
 	if (!BC_PROG_STACK(&G.prog.results, idx + 1))
 		return bc_error_stack_has_too_few_elements();
 
 	r = bc_vec_item_rev(&G.prog.results, idx);
+	num = NULL; // is this NULL necessary?
 	s = bc_program_num(r, &num, false);
 	if (s) return s;
 
@@ -5754,16 +5753,18 @@ static BcStatus bc_program_print(char inst, size_t idx)
 		if (!s) bc_num_copy(&G.prog.last, num);
 	}
 	else {
+		char *str;
 
 		idx = (r->t == BC_RESULT_STR) ? r->d.id.idx : num->rdx;
 		str = *bc_program_str(idx);
 
 		if (inst == BC_INST_PRINT_STR) {
-			for (i = 0, len = strlen(str); i < len; ++i) {
-				char c = str[i];
+			for (;;) {
+				char c = *str++;
+				if (c == '\0') break;
 				bb_putchar(c);
-				if (c == '\n') G.prog.nchars = SIZE_MAX;
 				++G.prog.nchars;
+				if (c == '\n') G.prog.nchars = 0;
 			}
 		}
 		else {


More information about the busybox-cvs mailing list