From 2268a2b76106cc2ee91cdf5ce6ea22bb1aa5b174 Mon Sep 17 00:00:00 2001 From: John Sully Date: Sat, 15 Aug 2020 23:27:32 +0000 Subject: [PATCH] remove unnecessary allocation in rdb save Former-commit-id: dfa76f04fd862e0cc7b4d3284b3922e3a5e5549d --- src/rdb.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/rdb.cpp b/src/rdb.cpp index 0ed4febf1..0781cb7b4 100644 --- a/src/rdb.cpp +++ b/src/rdb.cpp @@ -349,20 +349,24 @@ writeerr: } ssize_t rdbSaveLzfStringObject(rio *rdb, const unsigned char *s, size_t len) { + char rgbuf[2048]; size_t comprlen, outlen; - void *out; + void *out = rgbuf; /* We require at least four bytes compression for this to be worth it */ if (len <= 4) return 0; outlen = len-4; - if ((out = zmalloc(outlen+1, MALLOC_LOCAL)) == NULL) return 0; + if (outlen >= sizeof(rgbuf)) + if ((out = zmalloc(outlen+1, MALLOC_LOCAL)) == NULL) return 0; comprlen = lzf_compress(s, len, out, outlen); if (comprlen == 0) { - zfree(out); + if (out != rgbuf) + zfree(out); return 0; } ssize_t nwritten = rdbSaveLzfBlob(rdb, out, comprlen, len); - zfree(out); + if (out != rgbuf) + zfree(out); return nwritten; }