From: antirez Date: Tue, 27 Oct 2009 08:06:54 +0000 (+0100) Subject: zmalloc Solaris fixes thanks to Alan Harder X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/d8b5f18f1da560dbe39e553407f0fd58d43d0129 zmalloc Solaris fixes thanks to Alan Harder --- diff --git a/zmalloc.c b/zmalloc.c index 54d4bf3a..d4532381 100644 --- a/zmalloc.c +++ b/zmalloc.c @@ -33,6 +33,12 @@ #include #include "config.h" +#if defined(__sun) +#define PREFIX_SIZE sizeof(long long) +#else +#define PREFIX_SIZE sizeof(size_t) +#endif + static size_t used_memory = 0; static void zmalloc_oom(size_t size) { @@ -43,7 +49,7 @@ static void zmalloc_oom(size_t size) { } void *zmalloc(size_t size) { - void *ptr = malloc(size+sizeof(size_t)); + void *ptr = malloc(size+PREFIX_SIZE); if (!ptr) zmalloc_oom(size); #ifdef HAVE_MALLOC_SIZE @@ -51,8 +57,8 @@ void *zmalloc(size_t size) { return ptr; #else *((size_t*)ptr) = size; - used_memory += size+sizeof(size_t); - return (char*)ptr+sizeof(size_t); + used_memory += size+PREFIX_SIZE; + return (char*)ptr+PREFIX_SIZE; #endif } @@ -73,15 +79,15 @@ void *zrealloc(void *ptr, size_t size) { used_memory += redis_malloc_size(newptr); return newptr; #else - realptr = (char*)ptr-sizeof(size_t); + realptr = (char*)ptr-PREFIX_SIZE; oldsize = *((size_t*)realptr); - newptr = realloc(realptr,size+sizeof(size_t)); + newptr = realloc(realptr,size+PREFIX_SIZE); if (!newptr) zmalloc_oom(size); *((size_t*)newptr) = size; used_memory -= oldsize; used_memory += size; - return (char*)newptr+sizeof(size_t); + return (char*)newptr+PREFIX_SIZE; #endif } @@ -96,9 +102,9 @@ void zfree(void *ptr) { used_memory -= redis_malloc_size(ptr); free(ptr); #else - realptr = (char*)ptr-sizeof(size_t); + realptr = (char*)ptr-PREFIX_SIZE; oldsize = *((size_t*)realptr); - used_memory -= oldsize+sizeof(size_t); + used_memory -= oldsize+PREFIX_SIZE; free(realptr); #endif }