]> git.saurik.com Git - redis.git/blobdiff - redis.c
Fixed redis-cli auth code
[redis.git] / redis.c
diff --git a/redis.c b/redis.c
index fe84898fe239671396e5b9c8e58b7a3b936ee62f..ec971419f2a178a97eb13a648ea3b863415667c7 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -27,7 +27,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define REDIS_VERSION "1.3.4"
+#define REDIS_VERSION "1.3.5"
 
 #include "fmacros.h"
 #include "config.h"
@@ -1005,6 +1005,10 @@ static int dictEncObjKeyCompare(void *privdata, const void *key1,
     robj *o1 = (robj*) key1, *o2 = (robj*) key2;
     int cmp;
 
+    if (o1->encoding == REDIS_ENCODING_INT &&
+        o2->encoding == REDIS_ENCODING_INT &&
+        o1->ptr == o2->ptr) return 0;
+
     o1 = getDecodedObject(o1);
     o2 = getDecodedObject(o2);
     cmp = sdsDictKeyCompare(privdata,o1->ptr,o2->ptr);
@@ -5943,9 +5947,12 @@ static void hdelCommand(redisClient *c) {
         checkType(c,o,REDIS_HASH)) return;
 
     if (o->encoding == REDIS_ENCODING_ZIPMAP) {
+        robj *field = getDecodedObject(c->argv[2]);
+
         o->ptr = zipmapDel((unsigned char*) o->ptr,
-            (unsigned char*) c->argv[2]->ptr,
-            sdslen(c->argv[2]->ptr), &deleted);
+            (unsigned char*) field->ptr,
+            sdslen(field->ptr), &deleted);
+        decrRefCount(field);
     } else {
         deleted = dictDelete((dict*)o->ptr,c->argv[2]) == DICT_OK;
     }