From 66e7676e3a9b72cbcc74555d019aca3192dfa6ce Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 24 May 2020 23:09:35 +0200 Subject: [PATCH 1/4] 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 From adc324d337391ff8c8c844a62966a6a899116849 Mon Sep 17 00:00:00 2001 From: Anonymus Raccoon Date: Sun, 24 May 2020 23:15:14 +0200 Subject: [PATCH 2/4] Remvoving a test --- tests/tester/tests | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/tests/tester/tests b/tests/tester/tests index d7f5d86..5fa0d3a 100644 --- a/tests/tester/tests +++ b/tests/tester/tests @@ -183,17 +183,6 @@ TESTS= echo 'alias' [917-END] -[918] -NAME="918" -SETUP="" -CLEAN="" -TESTS= - echo 'alias ls cd ..' - echo 'alias | grep cd' - echo 'alias ls cd' - echo 'alias | grep cd' -[918-END] - [919] NAME="919" SETUP="" From 887cb6f3269f6d68f7f29bb508ad917bc1841260 Mon Sep 17 00:00:00 2001 From: Anonymus Raccoon Date: Sun, 24 May 2020 23:23:44 +0200 Subject: [PATCH 3/4] Adding free --- src/redirections/redirection_manager.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/redirections/redirection_manager.c b/src/redirections/redirection_manager.c index a95cd95..3c90fe2 100644 --- a/src/redirections/redirection_manager.c +++ b/src/redirections/redirection_manager.c @@ -100,16 +100,16 @@ bool command_format_is_invalid(char **cmds, env_t *env, int *return_values) int eval_raw_cmd(char *cmd, env_t *env) { int *return_values = NULL; - char **cmds = NULL; + char **cmds = split_str(cmd, (char *[]){";", "||", "&&", NULL}); + char **const_cmd = cmds; int ret = 0; return_values = get_return_separator(cmd); - cmds = split_str(cmd, (char *[]){";", "||", "&&", NULL}); cmds = remove_leading_entries(cmds); - if (!cmds) + if (!cmds || !return_values) return (-1); if (command_format_is_invalid(cmds, env, return_values)) - return (0); + return (free(const_cmd), free(return_values), 0); for (int i = 0; cmds[i]; i++) { if ((return_values[i] == 0 && get_return(my_getenv(env->vars, "?"))) || (return_values[i] == 1 && !get_return(my_getenv(env->vars, "?")))){ @@ -117,5 +117,7 @@ int eval_raw_cmd(char *cmd, env_t *env) } else if (run_with_redirections(cmds[i], env, NULL)) ret = -1; } + free(const_cmd); + free(return_values); return (ret); } \ No newline at end of file From b0dacf67ebc87256a3c092c46ba9708f0ce6b3fe Mon Sep 17 00:00:00 2001 From: Anonymus Raccoon Date: Sun, 24 May 2020 23:26:21 +0200 Subject: [PATCH 4/4] Fixing a bug --- src/redirections/redirection_manager.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/redirections/redirection_manager.c b/src/redirections/redirection_manager.c index 3c90fe2..d3d96ec 100644 --- a/src/redirections/redirection_manager.c +++ b/src/redirections/redirection_manager.c @@ -99,12 +99,11 @@ bool command_format_is_invalid(char **cmds, env_t *env, int *return_values) int eval_raw_cmd(char *cmd, env_t *env) { - int *return_values = NULL; + int *return_values = get_return_separator(cmd); char **cmds = split_str(cmd, (char *[]){";", "||", "&&", NULL}); char **const_cmd = cmds; int ret = 0; - return_values = get_return_separator(cmd); cmds = remove_leading_entries(cmds); if (!cmds || !return_values) return (-1);