diff options
author | yoav@monfort.co.il <yoav@monfort.co.il> | 2016-02-07 20:24:28 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2016-02-10 09:17:47 +0100 |
commit | 42cb422e37311640b8566b0a01447d8447ed73fa (patch) | |
tree | 3349398945c94c2b0f43a442825bacd472717b7f | |
parent | 32535ff5de54aaa517bf6f478f1e2edd0e676670 (diff) | |
download | redis-42cb422e37311640b8566b0a01447d8447ed73fa.tar.gz |
cmsgpack: pass correct osize values to lua allocator, update correct buf free space in cmsgpack
-rw-r--r-- | deps/lua/src/lua_cmsgpack.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/deps/lua/src/lua_cmsgpack.c b/deps/lua/src/lua_cmsgpack.c index 0b82d008d..7b8adb976 100644 --- a/deps/lua/src/lua_cmsgpack.c +++ b/deps/lua/src/lua_cmsgpack.c @@ -119,10 +119,10 @@ mp_buf *mp_buf_new(lua_State *L) { void mp_buf_append(mp_buf *buf, const unsigned char *s, size_t len) { if (buf->free < len) { - size_t newlen = buf->len+len; + size_t newsize = (buf->len+len)*2; - buf->b = (unsigned char*)mp_realloc(buf->L, buf->b, buf->len, newlen*2); - buf->free = newlen; + buf->b = (unsigned char*)mp_realloc(buf->L, buf->b, buf->len + buf->free, newsize); + buf->free = newsize - buf->len; } memcpy(buf->b+buf->len,s,len); buf->len += len; @@ -130,7 +130,7 @@ void mp_buf_append(mp_buf *buf, const unsigned char *s, size_t len) { } void mp_buf_free(mp_buf *buf) { - mp_realloc(buf->L, buf->b, buf->len, 0); /* realloc to 0 = free */ + mp_realloc(buf->L, buf->b, buf->len + buf->free, 0); /* realloc to 0 = free */ mp_realloc(buf->L, buf, sizeof(*buf), 0); } |