mirror of
https://github.com/fluencelabs/redis
synced 2025-07-18 18:11:55 +00:00
sds.c no longe pre-allocate more than 1MB of free space ahead. This fixes issue #252.
This commit is contained in:
@@ -107,7 +107,11 @@ static sds sdsMakeRoomFor(sds s, size_t addlen) {
|
|||||||
if (free >= addlen) return s;
|
if (free >= addlen) return s;
|
||||||
len = sdslen(s);
|
len = sdslen(s);
|
||||||
sh = (void*) (s-(sizeof(struct sdshdr)));
|
sh = (void*) (s-(sizeof(struct sdshdr)));
|
||||||
newlen = (len+addlen)*2;
|
newlen = (len+addlen);
|
||||||
|
if (newlen < SDS_MAX_PREALLOC)
|
||||||
|
newlen *= 2;
|
||||||
|
else
|
||||||
|
newlen += SDS_MAX_PREALLOC;
|
||||||
newsh = zrealloc(sh, sizeof(struct sdshdr)+newlen+1);
|
newsh = zrealloc(sh, sizeof(struct sdshdr)+newlen+1);
|
||||||
#ifdef SDS_ABORT_ON_OOM
|
#ifdef SDS_ABORT_ON_OOM
|
||||||
if (newsh == NULL) sdsOomAbort();
|
if (newsh == NULL) sdsOomAbort();
|
||||||
|
@@ -31,6 +31,8 @@
|
|||||||
#ifndef __SDS_H
|
#ifndef __SDS_H
|
||||||
#define __SDS_H
|
#define __SDS_H
|
||||||
|
|
||||||
|
#define SDS_MAX_PREALLOC (1024*1024)
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user