From 66e7676e3a9b72cbcc74555d019aca3192dfa6ce Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 24 May 2020 23:09:35 +0200 Subject: [PATCH] fix unalias --- src/builtin/builtin_unalias.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/builtin/builtin_unalias.c b/src/builtin/builtin_unalias.c index 207260c..ab208a3 100644 --- a/src/builtin/builtin_unalias.c +++ b/src/builtin/builtin_unalias.c @@ -33,6 +33,7 @@ void free_alias(alias_t *alias) void remove_alias(char *alias, alias_t **list) { + alias_t *prev = NULL; alias_t *tmp = *list; if (!tmp) @@ -42,15 +43,14 @@ void remove_alias(char *alias, alias_t **list) free_alias(tmp); return; } - for (alias_t *ptr = *list; ptr->next; ptr = ptr->next) { - if (strcmp(ptr->next->alias, alias) == 0) { - tmp = ptr->next; - ptr->next = ptr->next->next; + prev = tmp; + tmp = tmp->next; + for (; tmp; tmp = tmp->next) { + if (strcmp(tmp->alias, alias) == 0) { + prev->next = tmp->next; free_alias(tmp); return; } + prev = tmp; } - for (tmp = *list; tmp; tmp = tmp->next->next); - free_alias(tmp->next); - tmp->next = NULL; } \ No newline at end of file