diff --git a/42sh/Makefile b/42sh/Makefile index 0b9b37f2..84a9ac20 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -98,6 +98,7 @@ glob/lib_perso/ft_ld_reverse.c\ glob/lib_perso/ft_ld_size.c\ glob/lib_perso/ft_ld_swap.c\ glob/lib_perso/ft_ld_to_tab.c\ +glob/lib_perso/ft_memrealloc.c\ glob/lib_perso/ft_strjoinf.c\ glob/lib_perso/ft_strsubf.c\ glob/lib_perso/ft_tabdel.c\ diff --git a/42sh/includes/glob.h b/42sh/includes/glob.h index 728ce648..798b417b 100644 --- a/42sh/includes/glob.h +++ b/42sh/includes/glob.h @@ -6,7 +6,7 @@ /* By: wescande +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/04 16:31:18 by wescande #+# #+# */ -/* Updated: 2017/02/07 19:40:59 by wescande ### ########.fr */ +/* Updated: 2017/02/08 13:54:57 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -114,4 +114,5 @@ char *ft_strsubf(char *s, unsigned int start, void ft_tabdel(char ***mytab); int ft_tablen(char **mytab); +void *ft_memrealloc(void *ptr, size_t old_s, size_t new_s); #endif diff --git a/42sh/src/glob/lib_perso/ft_memrealloc.c b/42sh/src/glob/lib_perso/ft_memrealloc.c new file mode 100644 index 00000000..08130733 --- /dev/null +++ b/42sh/src/glob/lib_perso/ft_memrealloc.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memrealloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: wescande +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/05 13:44:36 by wescande #+# #+# */ +/* Updated: 2017/02/08 13:54:33 by wescande ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "glob.h" + +void *ft_memrealloc(void *ptr, size_t old_s, size_t new_s) +{ + void *n_ptr; + + if (!ptr) + return (ft_memalloc(new_s)); + if (!old_s) + { + ft_memdel(&ptr); + return (ft_memalloc(new_s)); + } + n_ptr = ft_memalloc(new_s); + ft_memcpy(n_ptr, ptr, old_s); + ft_memdel(ptr); + return (n_ptr); +} diff --git a/42sh/src/lexer/token_append.c b/42sh/src/lexer/token_append.c index 3fcfec70..d7205017 100644 --- a/42sh/src/lexer/token_append.c +++ b/42sh/src/lexer/token_append.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/11 17:18:42 by jhalford #+# #+# */ -/* Updated: 2017/02/07 15:32:08 by wescande ### ########.fr */ +/* Updated: 2017/02/08 13:55:31 by wescande ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,10 +21,12 @@ int token_append(t_token *token, char c, short int esc, short int esc2) { token->size += 8; token->data = (char *)ft_realloc(token->data, token->size + 1); - token->esc = (unsigned char *)ft_realloc((char *)token->esc, + token->esc = (unsigned char *)ft_memrealloc((char *)token->esc, + (token->size >> 3), (token->size >> 3) + 1); token->esc[token->size >> 3] = 0; - token->esc2 = (unsigned char *)ft_realloc((char *)token->esc2, + token->esc2 = (unsigned char *)ft_memrealloc((char *)token->esc2, + (token->size >> 3), (token->size >> 3) + 1); token->esc2[token->size >> 3] = 0; }