diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-10-17 09:09:41 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-10-17 09:09:41 +0200 |
| commit | 6cb01d2fd8a6b07ef3ddaa8bb322f30c545316e7 (patch) | |
| tree | b4ff52e57f5cbef2a4ea578e0401a2b206318d4a | |
| parent | 8a4d4c806e9896228f016baa62c5c7e219acf655 (diff) | |
| download | libft-6cb01d2fd8a6b07ef3ddaa8bb322f30c545316e7.tar.gz libft-6cb01d2fd8a6b07ef3ddaa8bb322f30c545316e7.tar.bz2 libft-6cb01d2fd8a6b07ef3ddaa8bb322f30c545316e7.zip | |
More protection
- substr if start > str length
- all list functions check for NULL reference
- not modifying const pointers
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | ft_atoi.c | 2 | ||||
| -rw-r--r-- | ft_lstadd_back_bonus.c | 4 | ||||
| -rw-r--r-- | ft_lstadd_front_bonus.c | 4 | ||||
| -rw-r--r-- | ft_lstclear_bonus.c | 6 | ||||
| -rw-r--r-- | ft_lstdelone_bonus.c | 5 | ||||
| -rw-r--r-- | ft_lstiter_bonus.c | 4 | ||||
| -rw-r--r-- | ft_lstmap_bonus.c | 6 | ||||
| -rw-r--r-- | ft_putstr.c | 12 | ||||
| -rw-r--r-- | ft_split.c | 42 | ||||
| -rw-r--r-- | ft_substr.c | 9 | ||||
| -rw-r--r-- | libft.h | 16 |
12 files changed, 62 insertions, 51 deletions
@@ -6,7 +6,7 @@ # By: cacharle <marvin@42.fr> +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2019/10/08 15:45:53 by cacharle #+# #+# # -# Updated: 2019/10/15 14:02:08 by cacharle ### ########.fr # +# Updated: 2019/10/16 14:41:13 by cacharle ### ########.fr # # # # **************************************************************************** # @@ -39,7 +39,6 @@ all: $(NAME) $(NAME): $(OBJ) $(INCLUDE) $(LIB) $(NAME) $(OBJ) -bonus: CCFLAGS += -D LIBFT_BONUS bonus: $(OBJ) $(BONUSOBJ) $(INCLUDE) $(LIB) $(NAME) $(OBJ) $(BONUSOBJ) @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:46:16 by cacharle #+# #+# */ -/* Updated: 2019/10/07 14:04:17 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 08:04:04 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/ft_lstadd_back_bonus.c b/ft_lstadd_back_bonus.c index 1cb532b..6d5e72a 100644 --- a/ft_lstadd_back_bonus.c +++ b/ft_lstadd_back_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:02:03 by cacharle #+# #+# */ -/* Updated: 2019/10/09 09:07:46 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:07:15 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ void ft_lstadd_back(t_list **alst, t_list *new) { t_list *cursor; + if (alst == NULL) + return ; if (*alst == NULL) { *alst = new; diff --git a/ft_lstadd_front_bonus.c b/ft_lstadd_front_bonus.c index a29c5c2..462f85e 100644 --- a/ft_lstadd_front_bonus.c +++ b/ft_lstadd_front_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:02:25 by cacharle #+# #+# */ -/* Updated: 2019/10/09 09:07:57 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:06:38 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ void ft_lstadd_front(t_list **alst, t_list *new) { + if (alst == NULL) + return ; new->next = *alst; *alst = new; } diff --git a/ft_lstclear_bonus.c b/ft_lstclear_bonus.c index b5829c7..ca80fb2 100644 --- a/ft_lstclear_bonus.c +++ b/ft_lstclear_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:02:39 by cacharle #+# #+# */ -/* Updated: 2019/10/15 14:32:23 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:03:58 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,9 +15,9 @@ void ft_lstclear(t_list **lst, void (*del)(void *)) { - if (*lst == NULL) + if (*lst == NULL || lst == NULL || del == NULL) return ; - ft_lstclear(&(*lst)->next, del); + ft_lstclear(&((*lst)->next), del); ft_lstdelone(*lst, del); *lst = NULL; } diff --git a/ft_lstdelone_bonus.c b/ft_lstdelone_bonus.c index 820be26..df15e3e 100644 --- a/ft_lstdelone_bonus.c +++ b/ft_lstdelone_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:03:02 by cacharle #+# #+# */ -/* Updated: 2019/10/09 09:08:36 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:05:40 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ void ft_lstdelone(t_list *lst, void (*del)(void *)) { - (*del)(lst->content); + if (lst != NULL && del != NULL) + (*del)(lst->content); free(lst); } diff --git a/ft_lstiter_bonus.c b/ft_lstiter_bonus.c index 6adc9dd..7b543cb 100644 --- a/ft_lstiter_bonus.c +++ b/ft_lstiter_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:03:22 by cacharle #+# #+# */ -/* Updated: 2019/10/15 15:29:45 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:02:38 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,8 @@ void ft_lstiter(t_list *lst, void (*f)(void *)) { + if (f == NULL) + return ; while (lst != NULL) { (*f)(lst->content); diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c index 2c97c84..47d72a0 100644 --- a/ft_lstmap_bonus.c +++ b/ft_lstmap_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:03:57 by cacharle #+# #+# */ -/* Updated: 2019/10/15 15:28:47 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:07:55 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,11 @@ t_list *ft_lstmap(t_list *lst, void *(*f)(void *)) { t_list *mapped; - if (lst == NULL) + if (lst == NULL || f == NULL) return (NULL); if ((mapped = ft_lstnew(lst->content)) == NULL) return (NULL); - mapped->content = f(mapped->content); + mapped->content = (*f)(mapped->content); mapped->next = ft_lstmap(lst->next, f); return (mapped); } diff --git a/ft_putstr.c b/ft_putstr.c index 0e87847..ac402ed 100644 --- a/ft_putstr.c +++ b/ft_putstr.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:52:12 by cacharle #+# #+# */ -/* Updated: 2019/10/07 09:52:15 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:06:58 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,12 @@ void ft_putstr(char const *s) { - while (*s) - write(STDOUT_FILENO, s++, 1); + int i; + + i = 0; + while (s[i]) + { + write(STDOUT_FILENO, &s[i], 1); + i++; + } } @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_strsplit.c :+: :+: :+: */ +/* ft_split.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2019/10/07 10:22:09 by cacharle #+# #+# */ -/* Updated: 2019/10/14 12:51:34 by cacharle ### ########.fr */ +/* Created: 2019/10/17 08:29:02 by cacharle #+# #+# */ +/* Updated: 2019/10/17 08:39:40 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,18 +15,20 @@ static size_t count_segment(char const *s, char c) { size_t counter; + int i; counter = 0; - while (*s) + i = 0; + while (s[i]) { - if (*s == c) + if (s[i] == c) { - s++; + i++; continue ; } counter++; - while (*s && *s != c) - s++; + while (s[i] && s[i] != c) + i++; } return (counter); } @@ -62,28 +64,26 @@ static void *destroy_strs(char **strs) char **ft_split(char const *s, char c) { char **strs; - size_t size; + size_t tab_counter; size_t i; size_t j; - size = count_segment(s, c); - if ((strs = (char**)malloc(sizeof(char*) * (size + 1))) == NULL) + tab_counter = count_segment(s, c); + if ((strs = (char**)malloc(sizeof(char*) * (tab_counter + 1))) == NULL) return (NULL); - j = 0; - while (*s) + tab_counter = 0; + j = -1; + while (s[++j]) { - if (*s == c) - { - s++; + if (s[j] == c) continue ; - } i = 0; - while (s[i] && s[i] != c) + while (s[j + i] && s[j + i] != c) i++; - if ((strs[j++] = ft_strndup(s, i)) == NULL) + if ((strs[tab_counter++] = ft_strndup(&s[j], i)) == NULL) return (destroy_strs(strs)); - s += i; + j += i - 1; } - strs[j] = NULL; + strs[tab_counter] = NULL; return (strs); } diff --git a/ft_substr.c b/ft_substr.c index 1d22059..1c23e85 100644 --- a/ft_substr.c +++ b/ft_substr.c @@ -1,22 +1,25 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_strsub.c :+: :+: :+: */ +/* ft_substr.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2019/10/07 10:16:26 by cacharle #+# #+# */ -/* Updated: 2019/10/14 13:24:02 by cacharle ### ########.fr */ +/* Created: 2019/10/17 08:28:49 by cacharle #+# #+# */ +/* Updated: 2019/10/17 08:28:55 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> +#include "libft.h" char *ft_substr(char const *s, unsigned int start, size_t len) { unsigned int i; char *sub; + if (start > ft_strlen(s)) + return (NULL); if ((sub = (char*)malloc(sizeof(char) * (len + 1))) == NULL) return (NULL); i = 0; @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:45:02 by cacharle #+# #+# */ -/* Updated: 2019/10/15 14:21:27 by cacharle ### ########.fr */ +/* Updated: 2019/10/17 09:08:31 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,16 +20,12 @@ typedef unsigned char t_byte; -# ifdef LIBFT_BONUS - typedef struct s_list { void *content; struct s_list *next; } t_list; -# endif - void *ft_memset(void *s, int c, size_t n); void ft_bzero(void *s, size_t n); void *ft_memcpy(void *dest, const void *src, size_t n); @@ -86,7 +82,9 @@ void ft_putstr_fd(char *s, int fd); void ft_putendl_fd(char *s, int fd); void ft_putnbr_fd(int n, int fd); -# ifdef LIBFT_BONUS +/* +** bonus +*/ t_list *ft_lstnew(void const *content); void ft_lstadd_front(t_list **alst, t_list *new); @@ -95,9 +93,7 @@ t_list *ft_lstlast(t_list *lst); void ft_lstadd_back(t_list **alst, t_list *new); void ft_lstdelone(t_list *lst, void (*del)(void *)); void ft_lstclear(t_list **lst, void (*del)(void *)); -void ft_lstiter(t_list *lst, void (*f)(t_list *)); -t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *)); - -# endif +void ft_lstiter(t_list *lst, void (*f)(void *)); +t_list *ft_lstmap(t_list *lst, void *(*f)(void *)); #endif |
