summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2017-01-11 15:36:48 +0100
committerantirez <antirez@gmail.com>2017-01-11 15:38:09 +0100
commit41868796759f5cf16c83e7a09c3e2f7abec08670 (patch)
treef2b01bf9aa1335c942f03a18ab48e5dd0661eb19
parente91f0ea1b3b1fa6237ec6b359a2665ab0f472989 (diff)
downloadredis-41868796759f5cf16c83e7a09c3e2f7abec08670.tar.gz
Defrag: do not crash on empty quicklist.
-rw-r--r--src/defrag.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/defrag.c b/src/defrag.c
index ddfd6e2dd..dee879349 100644
--- a/src/defrag.c
+++ b/src/defrag.c
@@ -308,7 +308,7 @@ int defargKey(redisDb *db, dictEntry *de) {
quicklistNode *node = ql->head, *newnode;
if ((newql = activeDefragAlloc(ql)))
defragged++, ob->ptr = ql = newql;
- do {
+ while (node) {
if ((newnode = activeDefragAlloc(node))) {
if (newnode->prev)
newnode->prev->next = newnode;
@@ -323,7 +323,8 @@ int defargKey(redisDb *db, dictEntry *de) {
}
if ((newzl = activeDefragAlloc(node->zl)))
defragged++, node->zl = newzl;
- } while ((node = node->next));
+ node = node->next;
+ }
} else if (ob->encoding == OBJ_ENCODING_ZIPLIST) {
if ((newzl = activeDefragAlloc(ob->ptr)))
defragged++, ob->ptr = newzl;