From 8be32ce2cb17950569b94273cee6099289c4d022 Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 14 Jul 2005 00:06:43 +0000 Subject: cannot trust system libraries to lock properly. sigh. --- src/lib9/malloc.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/lib9/malloc.c') diff --git a/src/lib9/malloc.c b/src/lib9/malloc.c index a32178b3..7b6b59dc 100644 --- a/src/lib9/malloc.c +++ b/src/lib9/malloc.c @@ -7,12 +7,19 @@ #define NOPLAN9DEFINES #include +static Lock malloclock; + void* p9malloc(ulong n) { + void *v; + if(n == 0) n++; - return malloc(n); + lock(&malloclock); + v = malloc(n); + unlock(&malloclock); + return v; } void @@ -20,20 +27,30 @@ p9free(void *v) { if(v == nil) return; + lock(&malloclock); free(v); + unlock(&malloclock); } void* p9calloc(ulong a, ulong b) { + void *v; + if(a*b == 0) a = b = 1; - return calloc(a*b, 1); + lock(&malloclock); + v = calloc(a*b, 1); + unlock(&malloclock); + return v; } void* p9realloc(void *v, ulong n) { - return realloc(v, n); + lock(&malloclock); + v = realloc(v, n); + unlock(&malloclock); + return v; } -- cgit v1.2.3