mirror of
https://github.com/fluencelabs/redis
synced 2025-03-18 16:40:50 +00:00
zmalloc Solaris fixes thanks to Alan Harder
This commit is contained in:
parent
6e333bbee2
commit
d8b5f18f1d
22
zmalloc.c
22
zmalloc.c
@ -33,6 +33,12 @@
|
||||
#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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user