diff options
Diffstat (limited to 'src/defrag.c')
-rw-r--r-- | src/defrag.c | 10 |
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"); } |