diff --git a/src/t_set.c b/src/t_set.c index 3b862dc8..ce9f6ad3 100644 --- a/src/t_set.c +++ b/src/t_set.c @@ -321,7 +321,10 @@ void smoveCommand(redisClient *c) { /* If srcset and dstset are equal, SMOVE is a no-op */ if (srcset == dstset) { - addReply(c,shared.cone); + if (setTypeIsMember(srcset,ele)) + addReply(c,shared.cone); + else + addReply(c,shared.czero); return; } diff --git a/tests/unit/type/set.tcl b/tests/unit/type/set.tcl index 162de0af..f294c01f 100644 --- a/tests/unit/type/set.tcl +++ b/tests/unit/type/set.tcl @@ -450,6 +450,7 @@ start_server { test "SMOVE non existing key" { setup_move assert_equal 0 [r smove myset1 myset2 foo] + assert_equal 0 [r smove myset1 myset1 foo] assert_equal {1 a b} [lsort [r smembers myset1]] assert_equal {2 3 4} [lsort [r smembers myset2]] }