aboutsummaryrefslogtreecommitdiff
path: root/src/preprocess.c
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-10-08 12:33:40 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-10-08 12:33:40 +0200
commitf863725c60e38ecb6087a2172f29c910c7e598c5 (patch)
tree87335bdeb2af0d37b9ba40435a0f7a59b5807f56 /src/preprocess.c
parent80b74c925e5bf0aaed7329d87a5ed9b6a7d57fdb (diff)
downloadminishell-f863725c60e38ecb6087a2172f29c910c7e598c5.tar.gz
minishell-f863725c60e38ecb6087a2172f29c910c7e598c5.tar.bz2
minishell-f863725c60e38ecb6087a2172f29c910c7e598c5.zip
Fixing leaks in parser and preprocessor
Diffstat (limited to 'src/preprocess.c')
-rw-r--r--src/preprocess.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/preprocess.c b/src/preprocess.c
index 6204dc2..7f37a97 100644
--- a/src/preprocess.c
+++ b/src/preprocess.c
@@ -6,7 +6,7 @@
/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/03 08:58:49 by charles #+# #+# */
-/* Updated: 2020/10/07 16:50:42 by cacharle ### ########.fr */
+/* Updated: 2020/10/08 09:58:48 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -118,6 +118,7 @@ size_t interpolate(char *str, size_t i, t_tok_lst **curr_addr, enum e_tok prev_t
if (curr->tag & TAG_STR_DOUBLE)
{
curr->content = ft_strjoin3(before, match, after);
+ free(before);
return i + ft_strlen(match);
}
if (curr->tag & TAG_STR)
@@ -139,6 +140,8 @@ size_t interpolate(char *str, size_t i, t_tok_lst **curr_addr, enum e_tok prev_t
else if (fields->next == NULL)
{
curr->content = ft_strjoin3(before, fields->content, after);
+ free(before);
+ tok_lst_destroy(&fields, free);
return i + len;
}
else
@@ -146,13 +149,15 @@ size_t interpolate(char *str, size_t i, t_tok_lst **curr_addr, enum e_tok prev_t
last = tok_lst_last(fields);
last->tag = curr->tag;
curr->tag = TAG_STR;
- curr->content = ft_strjoin(before, fields->content);
- last->content = ft_strjoin(last->content, after);
+ curr->content = ft_strjoinf_snd(before, fields->content);
+ last->content = ft_strjoinf_fst(last->content, after);
+ free(before);
t_tok_lst *tmp = curr->next;
curr->next = fields->next;
(*curr_addr) = last;
(*curr_addr)->next = tmp;
+ free(fields);
return len;
}
}