xref: /plan9/sys/src/cmd/aquarela/smballoc.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include "headers.h"
2 
3 #ifndef LEAK
4 void *
smbemallocz(ulong size,int clear)5 smbemallocz(ulong size, int clear)
6 {
7 	void *p = nbemalloc(size);
8 	if (clear && p)
9 		memset(p, 0, size);
10 	return p;
11 }
12 
13 void *
smbemalloc(ulong size)14 smbemalloc(ulong size)
15 {
16 	return smbemallocz(size, 0);
17 }
18 
19 char *
smbestrdup(char * p)20 smbestrdup(char *p)
21 {
22 	char *q;
23 	q = smbemalloc(strlen(p) + 1);
24 	return strcpy(q, p);
25 }
26 #endif
27 
28 void
smbfree(void ** pp)29 smbfree(void **pp)
30 {
31 	void *p = *pp;
32 	if (p) {
33 		free(p);
34 		*pp = nil;
35 	}
36 }
37 
38 void
smberealloc(void ** pp,ulong size)39 smberealloc(void **pp, ulong size)
40 {
41 	*pp = realloc(*pp, size);
42 	assert(size == 0 || *pp);
43 }
44