]> git.saurik.com Git - redis.git/commitdiff
zmalloc Solaris fixes thanks to Alan Harder
authorantirez <antirez@gmail.com>
Tue, 27 Oct 2009 08:06:54 +0000 (09:06 +0100)
committerantirez <antirez@gmail.com>
Tue, 27 Oct 2009 08:06:54 +0000 (09:06 +0100)
zmalloc.c

index 54d4bf3ad4ee03405e55d2096b12d74cd725b82e..d453238136dcd87078c02c534ca21021c3e6fd1d 100644 (file)
--- a/zmalloc.c
+++ b/zmalloc.c
 #include <string.h>
 #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
 }