summaryrefslogtreecommitdiff
path: root/src/defrag.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/defrag.c')
-rw-r--r--src/defrag.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/defrag.c b/src/defrag.c
index ced4fd20a..e78c07929 100644
--- a/src/defrag.c
+++ b/src/defrag.c
@@ -874,10 +874,12 @@ long defragKey(redisDb *db, dictEntry *de) {
} else if (ob->type == OBJ_SET) {
if (ob->encoding == OBJ_ENCODING_HT) {
defragged += defragSet(db, de);
- } else if (ob->encoding == OBJ_ENCODING_INTSET) {
- intset *newis, *is = ob->ptr;
- if ((newis = activeDefragAlloc(is)))
- defragged++, ob->ptr = newis;
+ } else if (ob->encoding == OBJ_ENCODING_INTSET ||
+ ob->encoding == OBJ_ENCODING_LISTPACK)
+ {
+ void *newptr, *ptr = ob->ptr;
+ if ((newptr = activeDefragAlloc(ptr)))
+ defragged++, ob->ptr = newptr;
} else {
serverPanic("Unknown set encoding");
}