[git commit master 1/1] ash: fix another bug detected by var_bash4.tests

Denys Vlasenko vda.linux at googlemail.com
Fri Aug 6 20:06:21 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=1614900522a5d603909a2679acbdd4744c235c1b
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

... but var_bash4.tests still does not pass!

function                                             old     new   delta
expandarg                                            959     962      +3
localcmd                                             259     257      -2
readtoken1                                          3275    3260     -15
subevalvar                                          1178    1141     -37
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 3/-54)             Total: -51 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 74b1c3a..dcac4fe 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6272,6 +6272,8 @@ parse_sub_pattern(char *arg, int varflags)
 	char *idx, *repl = NULL;
 	unsigned char c;
 
+	//char *org_arg = arg;
+	//bb_error_msg("arg:'%s'", arg);
 	idx = arg;
 	while (1) {
 		c = *arg;
@@ -6290,6 +6292,7 @@ parse_sub_pattern(char *arg, int varflags)
 		arg++;
 	}
 	*idx = c; /* NUL */
+	//bb_error_msg("pattern:'%s' repl:'%s'", org_arg, repl);
 
 	return repl;
 }
@@ -6499,8 +6502,6 @@ subevalvar(char *p, char *varname, int strloc, int subtype,
 				//bb_error_msg("tail:'%s', quotes:%x", idx, quotes);
 				while (*idx) {
 					char *restart_detect = stackblock();
-					if (quotes && (unsigned char)*idx == CTLESC)
-						idx++;
 					STPUTC(*idx, expdest);
 					if (stackblock() != restart_detect)
 						goto restart;
-- 
1.7.1



More information about the busybox-cvs mailing list