From f723389e5143c9ee0bc3d9774bb523b1c752b74c Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 8 Oct 2019 18:33:20 +0200 Subject: Fix ft_memmove and calloc - memmove doesnt depend on a buffer size - calloc return NULL if count or size == 0 - added byte type --- ft_memmove.c | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) (limited to 'ft_memmove.c') diff --git a/ft_memmove.c b/ft_memmove.c index 185fd36..d5d6789 100644 --- a/ft_memmove.c +++ b/ft_memmove.c @@ -12,32 +12,24 @@ #include #include - -#define BUF_SIZE (2 << 12) +#include "libft.h" void *ft_memmove(void *dst, const void *src, size_t len) { - size_t i; - size_t j; - size_t k; - unsigned char tmp[BUF_SIZE]; + size_t i; + t_byte *dst_cast; + t_byte *src_cast; if (dst == NULL && src == NULL) return (NULL); - i = 0; - while (i < len) - { - j = 0; - while (j < BUF_SIZE && i < len) - { - tmp[j] = ((unsigned char*)src)[i]; - j++; - i++; - } - k = -1; - while (++k < j) - ((unsigned char*)dst)[k] = tmp[k]; - i++; - } - return (dst); + dst_cast = (t_byte*)dst; + src_cast = (t_byte*)src; + i = -1; + if (dst_cast < src_cast) + while (++i < len) + dst_cast[i] = src_cast[i]; + else + while (len-- > 0) + dst_cast[len] = src_cast[len]; + return (dst); } -- cgit