]> git.saurik.com Git - redis.git/commitdiff
fix to return error when calling INCR on a non-string type
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Tue, 11 May 2010 20:46:24 +0000 (22:46 +0200)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Tue, 11 May 2010 20:46:24 +0000 (22:46 +0200)
redis.c
test-redis.tcl

diff --git a/redis.c b/redis.c
index 4f3773d06a245a42fcd7aa88dfad68534306d2e2..9d8f5a9047e539212c59703a1bda9a3538b92884 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -4231,8 +4231,8 @@ static void incrDecrCommand(redisClient *c, long long incr) {
     robj *o;
 
     o = lookupKeyWrite(c->db,c->argv[1]);
-
-    if (getLongLongFromObjectOrReply(c, o, &value, NULL) != REDIS_OK) return;
+    if (o != NULL && checkType(c,o,REDIS_STRING)) return;
+    if (getLongLongFromObjectOrReply(c,o,&value,NULL) != REDIS_OK) return;
 
     value += incr;
     o = createObject(REDIS_STRING,sdscatprintf(sdsempty(),"%lld",value));
index d4a9ecdb017cb8cbecd45aca4e6ac35bd8a2d1b7..a306ea6a8c929b878858463785e933bfc86aba0c 100644 (file)
@@ -373,7 +373,7 @@ proc main {} {
 
     test {INCR fails against a key holding a list} {
         $r rpush mylist 1
-        catch {$r incr novar} err
+        catch {$r incr mylist} err
         $r rpop mylist
         format $err
     } {ERR*}