diff options
author | chendianqiang <chendianqiang@meituan.com> | 2019-07-22 17:45:30 +0800 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2019-07-31 18:57:33 +0200 |
commit | 2f8a07498e1e45b24b6bffd8541b928274fa8cc5 (patch) | |
tree | bb3a82dd0e4c605ffc144d857ac3d42c6fce57cb | |
parent | 436ed56d45b203beecc34e7a1849ed53566ce379 (diff) | |
download | redis-2f8a07498e1e45b24b6bffd8541b928274fa8cc5.tar.gz |
make memory usage consistent of robj with OBJ_ENCODING_INT
-rw-r--r-- | src/object.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/object.c b/src/object.c index d5a22e654..4bbbd0e01 100644 --- a/src/object.c +++ b/src/object.c @@ -467,10 +467,15 @@ robj *tryObjectEncoding(robj *o) { incrRefCount(shared.integers[value]); return shared.integers[value]; } else { - if (o->encoding == OBJ_ENCODING_RAW) sdsfree(o->ptr); - o->encoding = OBJ_ENCODING_INT; - o->ptr = (void*) value; - return o; + if (o->encoding == OBJ_ENCODING_RAW) { + sdsfree(o->ptr); + o->encoding = OBJ_ENCODING_INT; + o->ptr = (void*) value; + return o; + } else { + decrRefCount(o); + return createStringObjectFromLongLongForValue(value); + } } } |