diff --git a/src/t_zset.c b/src/t_zset.c index 400f22072..7a3394d47 100644 --- a/src/t_zset.c +++ b/src/t_zset.c @@ -3663,7 +3663,12 @@ void zrangeGenericCommand(zrange_result_handler *handler, int argc_start, int st lookupKeyWrite(c->db,key) : lookupKeyRead(c->db,key); if (zobj == NULL) { - addReply(c,shared.emptyarray); + if (store) { + handler->beginResultEmission(handler); + handler->finalizeResultEmission(handler, 0); + } else { + addReply(c, shared.emptyarray); + } goto cleanup; } diff --git a/tests/unit/type/zset.tcl b/tests/unit/type/zset.tcl index 6008bf5ba..554d9c2c1 100644 --- a/tests/unit/type/zset.tcl +++ b/tests/unit/type/zset.tcl @@ -1568,6 +1568,19 @@ start_server {tags {"zset"}} { r zrange z1 5 0 BYSCORE REV LIMIT 0 2 WITHSCORES } {d 4 c 3} + test {ZRANGESTORE - src key missing} { + set res [r zrangestore z2{t} missing{t} 0 -1] + assert_equal $res 0 + r exists z2{t} + } {0} + + test {ZRANGESTORE - src key wrong type} { + r zadd z2{t} 1 a + r set foo{t} bar + assert_error "*WRONGTYPE*" {r zrangestore z2{t} foo{t} 0 -1} + r zrange z2{t} 0 -1 + } {a} + test {ZRANGESTORE - empty range} { set res [r zrangestore z2 z1 5 6] assert_equal $res 0