/ libft / src / ft_ptr / ft_realloc.c
ft_realloc.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   ft_realloc.c                                       :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: ll-hotel <ll-hotel@student.42.fr>          +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2024/02/29 20:52:27 by ll-hotel          #+#    #+#             */
 9  /*   Updated: 2024/08/20 17:52:38 by ll-hotel         ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include "ft_basics.h"
14  #include <stdlib.h>
15  
16  void	*ft_realloc(void *p, unsigned long old_size, unsigned long n)
17  {
18  	void	*new;
19  
20  	if (n == 0)
21  		return (NULL);
22  	new = malloc(n);
23  	if (!new)
24  		return (NULL);
25  	if (!p)
26  		return (new);
27  	if (n < old_size)
28  		ft_memmove(new, p, n);
29  	else
30  		(void)ft_memmove(new, p, old_size);
31  	free(p);
32  	return (new);
33  }