aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/sh/alias.c11
-rw-r--r--bin/sh/tests/parser/Makefile1
-rw-r--r--bin/sh/tests/parser/alias18.08
3 files changed, 10 insertions, 10 deletions
diff --git a/bin/sh/alias.c b/bin/sh/alias.c
index e67ad649ff70..bbcf5fbe17e3 100644
--- a/bin/sh/alias.c
+++ b/bin/sh/alias.c
@@ -63,17 +63,8 @@ setalias(const char *name, const char *val)
{
struct alias *ap, **app;
+ unalias(name);
app = hashalias(name);
- for (ap = *app; ap; ap = ap->next) {
- if (equal(name, ap->name)) {
- INTOFF;
- ckfree(ap->val);
- ap->val = savestr(val);
- INTON;
- return;
- }
- }
- /* not found */
INTOFF;
ap = ckmalloc(sizeof (struct alias));
ap->name = savestr(name);
diff --git a/bin/sh/tests/parser/Makefile b/bin/sh/tests/parser/Makefile
index dd749e34b520..28816a926807 100644
--- a/bin/sh/tests/parser/Makefile
+++ b/bin/sh/tests/parser/Makefile
@@ -24,6 +24,7 @@ ${PACKAGE}FILES+= alias14.0
${PACKAGE}FILES+= alias15.0 alias15.0.stdout
${PACKAGE}FILES+= alias16.0
${PACKAGE}FILES+= alias17.0
+${PACKAGE}FILES+= alias18.0
${PACKAGE}FILES+= and-pipe-not.0
${PACKAGE}FILES+= case1.0
${PACKAGE}FILES+= case2.0
diff --git a/bin/sh/tests/parser/alias18.0 b/bin/sh/tests/parser/alias18.0
new file mode 100644
index 000000000000..74234fe72c05
--- /dev/null
+++ b/bin/sh/tests/parser/alias18.0
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+v=1
+alias a='alias a=v=2
+v=3
+a'
+eval a
+[ "$v" = 2 ]