diff options
author | rsc <devnull@localhost> | 2004-06-09 14:22:08 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-06-09 14:22:08 +0000 |
commit | 9c635587071dcd7db349ec24ece1b397d24ac486 (patch) | |
tree | fcaf992109d4492e0ccf0a243b181850d7fbe3fa /src/lib9/malloc.c | |
parent | f437e56d1d5c8180ee2f93273f78393426efd5f9 (diff) | |
download | plan9port-9c635587071dcd7db349ec24ece1b397d24ac486.tar.gz plan9port-9c635587071dcd7db349ec24ece1b397d24ac486.tar.bz2 plan9port-9c635587071dcd7db349ec24ece1b397d24ac486.zip |
asdf
Diffstat (limited to 'src/lib9/malloc.c')
-rw-r--r-- | src/lib9/malloc.c | 43 |
1 files changed, 13 insertions, 30 deletions
diff --git a/src/lib9/malloc.c b/src/lib9/malloc.c index 7c5b1786..2c6731ea 100644 --- a/src/lib9/malloc.c +++ b/src/lib9/malloc.c @@ -1,58 +1,41 @@ -#include <u.h> -#define NOPLAN9DEFINES -#include <libc.h> - /* - * The Unix libc routines cannot be trusted to do their own locking. - * Sad but apparently true. + * These are here mainly so that I can link against + * debugmalloc.c instead and not recompile the world. */ -static Lock malloclock; +#include <u.h> +#define NOPLAN9DEFINES +#include <libc.h> void* p9malloc(ulong n) { void *v; + if(n == 0) n++; -//fprint(2, "%s %d malloc\n", argv0, getpid()); - lock(&malloclock); - v = malloc(n); - unlock(&malloclock); -//fprint(2, "%s %d donemalloc\n", argv0, getpid()); - return v; + return malloc(n); } void p9free(void *v) { -//fprint(2, "%s %d free\n", argv0, getpid()); - lock(&malloclock); + if(v == nil) + return; free(v); - unlock(&malloclock); -//fprint(2, "%s %d donefree\n", argv0, getpid()); } void* p9calloc(ulong a, ulong b) { - void *v; + if(a*b == 0) + a = b = 1; -//fprint(2, "%s %d calloc\n", argv0, getpid()); - lock(&malloclock); - v = calloc(a, b); - unlock(&malloclock); -//fprint(2, "%s %d donecalloc\n", argv0, getpid()); - return v; + return calloc(a*b, 1); } void* p9realloc(void *v, ulong n) { -//fprint(2, "%s %d realloc\n", argv0, getpid()); - lock(&malloclock); - v = realloc(v, n); - unlock(&malloclock); -//fprint(2, "%s %d donerealloc\n", argv0, getpid()); - return v; + return realloc(v, n); } |