static robj *createListObject(void) {
list *l = listCreate();
-
+ robj *o = createObject(REDIS_LIST,l);
listSetFreeMethod(l,decrRefCount);
- return createObject(REDIS_LIST,l);
+ o->encoding = REDIS_ENCODING_LIST;
+ return o;
+}
+
+static robj *createZiplistObject(void) {
+ unsigned char *zl = ziplistNew();
+ robj *o = createObject(REDIS_LIST,zl);
+ o->encoding = REDIS_ENCODING_ZIPLIST;
+ return o;
}
static robj *createSetObject(void) {
/* Read list value */
if ((len = rdbLoadLen(fp,NULL)) == REDIS_RDB_LENERR) return NULL;
- o = createObject(REDIS_LIST,ziplistNew());
- o->encoding = REDIS_ENCODING_ZIPLIST;
+ o = createZiplistObject();
/* Load every single element of the list */
while(len--) {
addReply(c,shared.cone);
return;
}
- lobj = createObject(REDIS_LIST,ziplistNew());
- lobj->encoding = REDIS_ENCODING_ZIPLIST;
+ lobj = createZiplistObject();
dictAdd(c->db->dict,c->argv[1],lobj);
incrRefCount(c->argv[1]);
} else {
if (!handleClientsWaitingListPush(c,c->argv[2],value)) {
/* Create the list if the key does not exist */
if (!dobj) {
- dobj = createObject(REDIS_LIST,ziplistNew());
- dobj->encoding = REDIS_ENCODING_ZIPLIST;
+ dobj = createZiplistObject();
dictAdd(c->db->dict,c->argv[2],dobj);
incrRefCount(c->argv[2]);
}