]> git.saurik.com Git - redis.git/commitdiff
Merge branch 'issue_218' of git://github.com/pietern/redis
authorantirez <antirez@gmail.com>
Thu, 8 Apr 2010 14:07:26 +0000 (16:07 +0200)
committerantirez <antirez@gmail.com>
Thu, 8 Apr 2010 14:07:26 +0000 (16:07 +0200)
redis.c

diff --git a/redis.c b/redis.c
index f3db24265bcbedf56edc6e68298b92dd611fe092..b1fbb524c719c7f0bb6e36d2d8dbc1d4d62936e7 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -2602,6 +2602,21 @@ static void addReplyLong(redisClient *c, long l) {
     addReplySds(c,sdsnewlen(buf,len));
 }
 
+static void addReplyLongLong(redisClient *c, long long ll) {
+    char buf[128];
+    size_t len;
+
+    if (ll == 0) {
+        addReply(c,shared.czero);
+        return;
+    } else if (ll == 1) {
+        addReply(c,shared.cone);
+        return;
+    }
+    len = snprintf(buf,sizeof(buf),":%lld\r\n",ll);
+    addReplySds(c,sdsnewlen(buf,len));
+}
+
 static void addReplyUlong(redisClient *c, unsigned long ul) {
     char buf[128];
     size_t len;
@@ -6038,10 +6053,7 @@ static void hincrbyCommand(redisClient *c) {
         }
     }
 
-    robj *o_incr = getDecodedObject(c->argv[3]);
-    incr = strtoll(o_incr->ptr, NULL, 10);
-    decrRefCount(o_incr);
-
+    incr = strtoll(c->argv[3]->ptr, NULL, 10);
     if (o->encoding == REDIS_ENCODING_ZIPMAP) {
         unsigned char *zm = o->ptr;
         unsigned char *zval;
@@ -6092,7 +6104,7 @@ static void hincrbyCommand(redisClient *c) {
     }
 
     server.dirty++;
-    addReplyLong(c, value);
+    addReplyLongLong(c, value);
 }
 
 static void hgetCommand(redisClient *c) {