summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ft_lstclear_bonus.c2
-rw-r--r--ft_lstmap_bonus.c29
-rw-r--r--ft_lstnew_bonus.c4
-rw-r--r--libft.h2
4 files changed, 22 insertions, 15 deletions
diff --git a/ft_lstclear_bonus.c b/ft_lstclear_bonus.c
index 9af095e..f661fc9 100644
--- a/ft_lstclear_bonus.c
+++ b/ft_lstclear_bonus.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/10 16:26:23 by dkaiser #+# #+# */
-/* Updated: 2024/03/10 16:35:46 by dkaiser ### ########.fr */
+/* Updated: 2024/03/11 12:48:24 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c
index 91eabfc..1e4b867 100644
--- a/ft_lstmap_bonus.c
+++ b/ft_lstmap_bonus.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/10 16:45:21 by dkaiser #+# #+# */
-/* Updated: 2024/03/10 19:03:00 by dkaiser ### ########.fr */
+/* Updated: 2024/03/11 13:25:08 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -15,29 +15,36 @@
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
{
t_list *result;
- t_list *new;
+ t_list *cur_new;
+ void *content;
if (!lst || !f || !del)
return (NULL);
- new = ft_lstnew(f(lst->content));
- if (!new)
+ content = f(lst->content);
+ cur_new = ft_lstnew(content);
+ if (!cur_new)
{
- free(new);
+ del(content);
return (NULL);
}
- result = new;
+ result = cur_new;
+ if (!lst->next)
+ return (result);
lst = lst->next;
while (lst)
{
- new->next = ft_lstnew(f(lst->content));
- if (!new->next)
+ content = f(lst->content);
+ cur_new->next = ft_lstnew(content);
+ if (!cur_new->next)
{
- ft_lstclear(&new, del);
+ del(content);
+ ft_lstclear(&result, del);
return (NULL);
}
- new = new->next;
+ if (!lst->next)
+ return (result);
lst = lst->next;
+ cur_new = cur_new->next;
}
- // new->next = NULL;
return (result);
}
diff --git a/ft_lstnew_bonus.c b/ft_lstnew_bonus.c
index a8f43ce..eeb6030 100644
--- a/ft_lstnew_bonus.c
+++ b/ft_lstnew_bonus.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/10 14:57:39 by dkaiser #+# #+# */
-/* Updated: 2024/03/10 15:40:57 by dkaiser ### ########.fr */
+/* Updated: 2024/03/11 12:52:00 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -18,7 +18,7 @@ t_list *ft_lstnew(void *content)
result = malloc(sizeof(t_list));
if (!result)
- return (0);
+ return (NULL);
result->content = content;
result->next = NULL;
return (result);
diff --git a/libft.h b/libft.h
index 1256bdc..148094f 100644
--- a/libft.h
+++ b/libft.h
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/10 16:37:54 by dkaiser #+# #+# */
-/* Updated: 2024/03/10 17:17:50 by dkaiser ### ########.fr */
+/* Updated: 2024/03/11 13:11:23 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */