X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/4a14dbbac2eb6148c50212222beb2639ecbc8760..0f23eb3b10402bd7166c09583333c29aa3c3f55f:/src/object.c?ds=inline diff --git a/src/object.c b/src/object.c index a6bf8a20..c384d600 100644 --- a/src/object.c +++ b/src/object.c @@ -138,11 +138,20 @@ void freeSetObject(robj *o) { } void freeZsetObject(robj *o) { - zset *zs = o->ptr; - - dictRelease(zs->dict); - zslFree(zs->zsl); - zfree(zs); + zset *zs; + switch (o->encoding) { + case REDIS_ENCODING_RAW: + zs = o->ptr; + dictRelease(zs->dict); + zslFree(zs->zsl); + zfree(zs); + break; + case REDIS_ENCODING_ZIPLIST: + zfree(o->ptr); + break; + default: + redisPanic("Unknown sorted set encoding"); + } } void freeHashObject(robj *o) {