]> git.saurik.com Git - redis.git/commitdiff
use REDIS_TAIL to insert AFTER an entry and REDIS_HEAD to insert BEFORE an entry
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Fri, 11 Jun 2010 09:53:16 +0000 (11:53 +0200)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Fri, 11 Jun 2010 09:53:16 +0000 (11:53 +0200)
redis.c

diff --git a/redis.c b/redis.c
index 6f082972908afa71dc07d18922fde1a6efae0af4..22894ec6a438f2f0eab6a434c31212a99b42029b 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -5091,7 +5091,7 @@ static robj *listTypeGet(listTypeEntry *entry) {
 static void listTypeInsert(robj *subject, listTypeEntry *old_entry, robj *new_obj, int where) {
     listTypeTryConversion(subject,new_obj);
     if (subject->encoding == REDIS_ENCODING_ZIPLIST) {
 static void listTypeInsert(robj *subject, listTypeEntry *old_entry, robj *new_obj, int where) {
     listTypeTryConversion(subject,new_obj);
     if (subject->encoding == REDIS_ENCODING_ZIPLIST) {
-        if (where == REDIS_HEAD) {
+        if (where == REDIS_TAIL) {
             unsigned char *next = ziplistNext(subject->ptr,old_entry->zi);
             if (next == NULL) {
                 listTypePush(subject,new_obj,REDIS_TAIL);
             unsigned char *next = ziplistNext(subject->ptr,old_entry->zi);
             if (next == NULL) {
                 listTypePush(subject,new_obj,REDIS_TAIL);
@@ -5102,10 +5102,10 @@ static void listTypeInsert(robj *subject, listTypeEntry *old_entry, robj *new_ob
             subject->ptr = ziplistInsert(subject->ptr,old_entry->zi,new_obj->ptr,sdslen(new_obj->ptr));
         }
     } else if (subject->encoding == REDIS_ENCODING_LIST) {
             subject->ptr = ziplistInsert(subject->ptr,old_entry->zi,new_obj->ptr,sdslen(new_obj->ptr));
         }
     } else if (subject->encoding == REDIS_ENCODING_LIST) {
-        if (where == REDIS_HEAD) {
-            listInsertNode(subject->ptr,old_entry->ln,new_obj,1);
+        if (where == REDIS_TAIL) {
+            listInsertNode(subject->ptr,old_entry->ln,new_obj,AL_START_TAIL);
         } else {
         } else {
-            listInsertNode(subject->ptr,old_entry->ln,new_obj,0);
+            listInsertNode(subject->ptr,old_entry->ln,new_obj,AL_START_HEAD);
         }
         incrRefCount(new_obj);
     } else {
         }
         incrRefCount(new_obj);
     } else {
@@ -5218,7 +5218,7 @@ static void pushxGenericCommand(redisClient *c, int where, robj *old_obj, robj *
     }
 
     if (old_obj != NULL) {
     }
 
     if (old_obj != NULL) {
-        if (where == REDIS_HEAD) {
+        if (where == REDIS_TAIL) {
             iter = listTypeInitIterator(subject,0,REDIS_TAIL);
         } else {
             iter = listTypeInitIterator(subject,-1,REDIS_HEAD);
             iter = listTypeInitIterator(subject,0,REDIS_TAIL);
         } else {
             iter = listTypeInitIterator(subject,-1,REDIS_HEAD);
@@ -5248,9 +5248,9 @@ static void rpushxCommand(redisClient *c) {
 
 static void linsertCommand(redisClient *c) {
     if (strcasecmp(c->argv[2]->ptr,"after") == 0) {
 
 static void linsertCommand(redisClient *c) {
     if (strcasecmp(c->argv[2]->ptr,"after") == 0) {
-        pushxGenericCommand(c,REDIS_HEAD,c->argv[3],c->argv[4]);
-    } else if (strcasecmp(c->argv[2]->ptr,"before") == 0) {
         pushxGenericCommand(c,REDIS_TAIL,c->argv[3],c->argv[4]);
         pushxGenericCommand(c,REDIS_TAIL,c->argv[3],c->argv[4]);
+    } else if (strcasecmp(c->argv[2]->ptr,"before") == 0) {
+        pushxGenericCommand(c,REDIS_HEAD,c->argv[3],c->argv[4]);
     } else {
         addReply(c,shared.syntaxerr);
     }
     } else {
         addReply(c,shared.syntaxerr);
     }