diff --git a/src/t_set.c b/src/t_set.c index c974c185..f50c0aa3 100644 --- a/src/t_set.c +++ b/src/t_set.c @@ -343,7 +343,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 a9a3d083..7b467f1c 100644 --- a/tests/unit/type/set.tcl +++ b/tests/unit/type/set.tcl @@ -519,6 +519,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]] }