[git commit] bc: better handle optional args of bc_program_pushVar()

Denys Vlasenko vda.linux at googlemail.com
Wed Dec 5 14:43:35 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=416ce76bcd26084099f430367f88387fced1c34e
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

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

diff --git a/miscutils/bc.c b/miscutils/bc.c
index 4257511f0..ee05cd4b4 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -5872,49 +5872,50 @@ static BcStatus bc_program_assign(char inst)
 	return s;
 }
 
+#if !ENABLE_DC
+#define bc_program_pushVar(code, bgn, pop, copy) \
+	bc_program_pushVar(code, bgn)
+// for bc, 'pop' and 'copy' are always false
+#endif
 static BcStatus bc_program_pushVar(char *code, size_t *bgn,
                                    bool pop, bool copy)
 {
 	BcStatus s = BC_STATUS_SUCCESS;
 	BcResult r;
 	char *name = bc_program_name(code, bgn);
-#if ENABLE_DC // Exclude
-	BcNum *num;
-	BcVec *v;
-#else
-	(void) pop, (void) copy;
-#endif
 
 	r.t = BC_RESULT_VAR;
 	r.d.id.name = name;
 
 #if ENABLE_DC
-	v = bc_program_search(name, true);
-	num = bc_vec_top(v);
+	{
+		BcVec *v = bc_program_search(name, true);
+		BcNum *num = bc_vec_top(v);
 
-	if (pop || copy) {
+		if (pop || copy) {
+
+			if (!BC_PROG_STACK(v, 2 - copy)) {
+				free(name);
+				return BC_STATUS_EXEC_STACK;
+			}
 
-		if (!BC_PROG_STACK(v, 2 - copy)) {
 			free(name);
-			return BC_STATUS_EXEC_STACK;
-		}
+			name = NULL;
 
-		free(name);
-		name = NULL;
+			if (!BC_PROG_STR(num)) {
 
-		if (!BC_PROG_STR(num)) {
+				r.t = BC_RESULT_TEMP;
 
-			r.t = BC_RESULT_TEMP;
+				bc_num_init(&r.d.n, BC_NUM_DEF_SIZE);
+				bc_num_copy(&r.d.n, num);
+			}
+			else {
+				r.t = BC_RESULT_STR;
+				r.d.id.idx = num->rdx;
+			}
 
-			bc_num_init(&r.d.n, BC_NUM_DEF_SIZE);
-			bc_num_copy(&r.d.n, num);
-		}
-		else {
-			r.t = BC_RESULT_STR;
-			r.d.id.idx = num->rdx;
+			if (!copy) bc_vec_pop(v);
 		}
-
-		if (!copy) bc_vec_pop(v);
 	}
 #endif // ENABLE_DC
 


More information about the busybox-cvs mailing list