diff options
Diffstat (limited to 'ft_lstmap_bonus.c')
| -rw-r--r-- | ft_lstmap_bonus.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c index 9ca7cad..81b9949 100644 --- a/ft_lstmap_bonus.c +++ b/ft_lstmap_bonus.c @@ -6,14 +6,14 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:03:57 by cacharle #+# #+# */ -/* Updated: 2019/10/21 11:43:10 by cacharle ### ########.fr */ +/* Updated: 2019/10/24 09:41:20 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> #include "libft.h" -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) { t_list *mapped; t_list *tmp; @@ -21,14 +21,13 @@ t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) if (lst == NULL || f == NULL || del == NULL) return (NULL); mapped = NULL; - while (lst) + while (lst != NULL) { if ((tmp = ft_lstnew((*f)(lst->content))) == NULL) { - ft_lstclear(&tmp, del); + ft_lstclear(&mapped, del); return (NULL); } - tmp->next = lst->next; ft_lstadd_back(&mapped, tmp); lst = lst->next; } @@ -38,6 +37,10 @@ t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) /* ** Rest in peace, my beautiful recursion. ** +** t_list *tmp; +** +** if (lst == NULL) +** return (NULL); ** if ((tmp = ft_lstnew(lst->content)) == NULL) ** return (NULL); ** tmp->content = (*f)(tmp->content); |
