Skip to content

Commit 5065466

Browse files
author
Shenya De Silva
committed
Non leaking ft_split
1 parent 6d5cdca commit 5065466

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

ft_split.c

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sde-silv <sde-silv@student.42berlin.de> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/06/08 14:47:28 by sde-silv #+# #+# */
9-
/* Updated: 2023/06/12 16:03:37 by sde-silv ### ########.fr */
9+
/* Updated: 2023/10/23 13:52:34 by sde-silv ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -65,6 +65,21 @@ static char *ft_copy_str(const char *s, int start, int len)
6565
return (str);
6666
}
6767

68+
static void ft_free(char **arr, int loc)
69+
{
70+
int i;
71+
72+
i = 0;
73+
while (arr[i] && i <= loc)
74+
{
75+
free(arr[i]);
76+
arr[i] = NULL;
77+
i ++;
78+
}
79+
free(arr);
80+
arr = NULL;
81+
}
82+
6883
char **ft_split(char const *s, char c)
6984
{
7085
char **arr;
@@ -85,6 +100,11 @@ char **ft_split(char const *s, char c)
85100
else if ((s[i] == c || i == ft_strlen(s)) && start >= 0)
86101
{
87102
arr[str] = ft_copy_str(s, start, i);
103+
if (!arr[str])
104+
{
105+
ft_free(arr, str);
106+
return (0);
107+
}
88108
str ++;
89109
start = -1;
90110
}
@@ -94,31 +114,32 @@ char **ft_split(char const *s, char c)
94114
return (arr);
95115
}
96116
/*
97-
int main(void) {
117+
int main(void)
118+
{
98119
int i ;
99120
char const *s;
100121
char **arr;
101122
102123
103-
s = " Hello World ! ";
124+
s = " 1 2 3 4";
104125
arr = ft_split(s, ' ');
105126
127+
printf("arr%p\n", arr);
106128
i = 0;
107129
while (arr[i] != NULL)
108130
{
109-
printf("%s\n", result[i]);
131+
printf("%s\n", arr[i]);
110132
i ++;
111133
}
112-
printf("%s\n", *arr);
113-
114134
i = 0;
115135
while (arr[i] != NULL)
116136
{
117137
free(arr[i]);
118138
i++;
119139
}
120140
free(arr);
121-
141+
arr = NULL;
142+
printf("arr%p\n", arr);
122143
return (0);
123144
}
124145
*/

0 commit comments

Comments
 (0)