aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc/realloc.c
blob: 490ba75c3320a8b8b2314b8bbf010ba890613305 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <alloc.h>
#include <mem.h>

void *calt_realloc(void *ptr, size_t size) {
	if (size) {
		struct calt_alloc alloc = calt_get_alloc();
		if (alloc.realloc) {
			return alloc.realloc(ptr, size);
		} else {
			void *new = calt_malloc(size);
			if (new && (ptr)) {
				calt_memcpy(new, ptr, size);
				calt_free(ptr);
			}
			return new;
		}
	} else {
		calt_free(ptr);
		return NULL;
	}
}