diff options
-rw-r--r-- | lib/env.c | 4 | ||||
-rwxr-xr-x | tests/env.test | 2 |
2 files changed, 3 insertions, 3 deletions
@@ -58,11 +58,9 @@ void xsetenv(char *name, char *val) if (!memcmp(name, environ[i], len) && environ[i][len]=='=') { if (i>=envc) free(environ[i]); else { - char **delete = environ+i; - // move old entries down, add at end of old data toys.envc = envc--; - for (i=0; new ? i<envc : !!delete[i]; i++) delete[i] = delete[i+1]; + for (; new ? i<envc : !!environ[i]; i++) environ[i] = environ[i+1]; i = envc; } break; diff --git a/tests/env.test b/tests/env.test index 3098731d..4df118dd 100755 --- a/tests/env.test +++ b/tests/env.test @@ -19,3 +19,5 @@ unset WALRUS BANANA LETTERS FILTER testcmd "early fail" '--oops 2> /dev/null ; echo $?' "125\n" "" "" testcmd "why is this allowed" "=BLAH env | grep '^=BLAH\$'" "=BLAH\n" "" "" + +testcmd "replace" "A=foo PATH= `which printenv` A" "foo\n" "" "" |