[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    [PATCH 2/2] ash: avoid creating multiple localvars entries for mutliple 'local -'s
From:       Eugene Rudoy <gene.devel () gmail ! com>
Date:       2015-04-26 21:32:01
Message-ID: 1430083921-26054-2-git-send-email-gene.devel () gmail ! com
[Download RAW message or body]

follow-up of 0a0acb55db8d7c4dec445573f1b0528d126b9e1f

not sure if the code is worth adding it to the repository, multiple 'local -'s are very very unlikely

Signed-off-by: Eugene Rudoy <gene.devel@gmail.com>
---
 shell/ash.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 3e9997b..7070f5e 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8971,6 +8971,7 @@ mklocal(char *name)
 	struct var **vpp;
 	struct var *vp;
 	char *eq = strchr(name, '=');
+	int lone_dash = LONE_DASH(name);
 
 	INT_OFF;
 	/* Cater for duplicate "local". Examples:
@@ -8979,7 +8980,7 @@ mklocal(char *name)
 	 */
 	lvp = localvars;
 	while (lvp) {
-		if (lvp->vp && varcmp(lvp->vp->var_text, name) == 0) {
+		if ((lvp->vp && varcmp(lvp->vp->var_text, name) == 0) || (!lvp->vp && lone_dash)) {
 			if (eq)
 				setvareq(name, 0);
 			/* else:
@@ -8991,7 +8992,7 @@ mklocal(char *name)
 	}
 
 	lvp = ckzalloc(sizeof(*lvp));
-	if (LONE_DASH(name)) {
+	if (lone_dash) {
 		char *p;
 		p = ckmalloc(sizeof(optlist));
 		lvp->text = memcpy(p, optlist, sizeof(optlist));
-- 
2.3.6

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic