summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchendianqiang <chendianqiang@meituan.com>2019-07-22 17:45:30 +0800
committerantirez <antirez@gmail.com>2019-07-31 18:57:33 +0200
commit2f8a07498e1e45b24b6bffd8541b928274fa8cc5 (patch)
treebb3a82dd0e4c605ffc144d857ac3d42c6fce57cb
parent436ed56d45b203beecc34e7a1849ed53566ce379 (diff)
downloadredis-2f8a07498e1e45b24b6bffd8541b928274fa8cc5.tar.gz
make memory usage consistent of robj with OBJ_ENCODING_INT
-rw-r--r--src/object.c13
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);
+ }
}
}