From 202fd608957c55714ace166aa2a903924048b86d Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Mon, 22 Jul 2024 00:11:49 +0200 Subject: [PATCH] Fix some minor issues Of by one errors, missing free and such. --- src/env.c | 3 ++- src/execution.c | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/env.c b/src/env.c index 4f7e580..8d6829c 100644 --- a/src/env.c +++ b/src/env.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/21 21:24:52 by ljiriste #+# #+# */ -/* Updated: 2024/07/21 21:34:58 by ljiriste ### ########.fr */ +/* Updated: 2024/07/21 23:46:03 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,7 @@ int init_env(t_execution_env *env, char **envp) void clean_env(t_execution_env *env) { clean_vars(env->vars); + free(env->vars); ft_vec_free(&env->redirections, NULL); return ; } diff --git a/src/execution.c b/src/execution.c index f342bcf..259d652 100644 --- a/src/execution.c +++ b/src/execution.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/21 08:57:54 by ljiriste #+# #+# */ -/* Updated: 2024/07/21 21:19:33 by ljiriste ### ########.fr */ +/* Updated: 2024/07/22 00:09:18 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -164,8 +164,10 @@ const char *get_var_value(const t_vec *vars, const char *var_name) while (i < vars->size) { line = ft_vec_caccess(vars, i); - if (ft_strncmp(*line, var_name, len) && (*line)[len + 1] == '=') - return (*line + len + 2); + if (!*line) + break ; + if (!ft_strncmp(*line, var_name, len) && (*line)[len] == '=') + return (*line + len + 1); ++i; } return (NULL); @@ -361,12 +363,15 @@ int save_redirections(t_vec *redirections, t_parse_tree_node *simple_command, co return (0); } +static const char space = ' '; + int add_word(t_vec *exp_str, const char *word, const t_execution_env *env) { size_t i; char *var; const char *value; + i = 0; while (word[i]) { if (word[i] == '$') @@ -386,6 +391,8 @@ int add_word(t_vec *exp_str, const char *word, const t_execution_env *env) if (ft_vec_append(exp_str, word + (i++)) != success) return (1); } + if (ft_vec_append(exp_str, &space) != success) + return (1); return (0); } @@ -469,6 +476,7 @@ int ex_fields(char **fields,__attribute__((unused)) const t_vec *assignments,__a { size_t i; + i = 0; while (fields[i]) ft_printf("%s\n", fields[i++]); return (0); @@ -496,6 +504,7 @@ int ex_simple_command(t_parse_tree_node *simple_command, t_execution_env *env) assignments_to_env(&assignments, env); ft_vec_free(&redirections, NULL); ft_vec_free(&assignments, NULL); + free_fields(fields); return (0); } res = ex_fields(fields, &assignments, &redirections, env); -- 2.30.2