remove unnecessary allocation in rdb save
Former-commit-id: dfa76f04fd862e0cc7b4d3284b3922e3a5e5549d
This commit is contained in:
parent
a14b2097c3
commit
2268a2b761
@ -349,19 +349,23 @@ writeerr:
|
|||||||
}
|
}
|
||||||
|
|
||||||
ssize_t rdbSaveLzfStringObject(rio *rdb, const unsigned char *s, size_t len) {
|
ssize_t rdbSaveLzfStringObject(rio *rdb, const unsigned char *s, size_t len) {
|
||||||
|
char rgbuf[2048];
|
||||||
size_t comprlen, outlen;
|
size_t comprlen, outlen;
|
||||||
void *out;
|
void *out = rgbuf;
|
||||||
|
|
||||||
/* We require at least four bytes compression for this to be worth it */
|
/* We require at least four bytes compression for this to be worth it */
|
||||||
if (len <= 4) return 0;
|
if (len <= 4) return 0;
|
||||||
outlen = len-4;
|
outlen = len-4;
|
||||||
|
if (outlen >= sizeof(rgbuf))
|
||||||
if ((out = zmalloc(outlen+1, MALLOC_LOCAL)) == NULL) return 0;
|
if ((out = zmalloc(outlen+1, MALLOC_LOCAL)) == NULL) return 0;
|
||||||
comprlen = lzf_compress(s, len, out, outlen);
|
comprlen = lzf_compress(s, len, out, outlen);
|
||||||
if (comprlen == 0) {
|
if (comprlen == 0) {
|
||||||
|
if (out != rgbuf)
|
||||||
zfree(out);
|
zfree(out);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ssize_t nwritten = rdbSaveLzfBlob(rdb, out, comprlen, len);
|
ssize_t nwritten = rdbSaveLzfBlob(rdb, out, comprlen, len);
|
||||||
|
if (out != rgbuf)
|
||||||
zfree(out);
|
zfree(out);
|
||||||
return nwritten;
|
return nwritten;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user