summaryrefslogtreecommitdiff
path: root/memory.h
blob: 9175dea4326b8ae9cf3ec103af77383c21effb1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once

#include <stdlib.h>

#define malloc(num,type) \
	((type*)check_after_allocation("malloc",num,sizeof(type),malloc((num)*sizeof(type))))
#define calloc(num,type) \
	((type*)check_after_allocation("calloc",num,sizeof(type),calloc((num),sizeof(type))))
#define realloc(ptr,num,type) \
	((type*)check_after_allocation("realloc",num,sizeof(type),realloc((ptr),(num)*sizeof(type))))
#define strdup(str) \
	((char*)check_after_allocation_str("strdup",strdup(str)))
#define asprintf(...) \
	(memory_asprintf_wrapper(__VA_ARGS__))

void* check_after_allocation(const char *func,size_t num,size_t sz,void *ptr);
void* check_after_allocation_str(const char *func,void *ptr);

int memory_asprintf_wrapper(char **ret,const char *format,...) __attribute__((format (printf, 2, 3)));