From 1a603e1a87d88500a9723460dcf60c9b57dc99d7 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 12 Sep 2017 16:19:26 +0200 Subject: [PATCH] Streams: fix bug in XREAD last received ID processing. --- src/t_stream.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/t_stream.c b/src/t_stream.c index 3b0072ec..a8230109 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -524,9 +524,9 @@ void xreadCommand(client *c) { /* Specifying "$" as last-known-id means that the client wants to be * served with just the messages that will arrive into the stream * starting from now. */ + int id_idx = i - streams_arg - streams_count; if (strcmp(c->argv[i]->ptr,"$") == 0) { robj *o = lookupKeyRead(c->db,c->argv[i-streams_count]); - int id_idx = i - streams_arg - streams_count; if (o) { stream *s = o->ptr; ids[id_idx] = s->last_id; @@ -536,7 +536,8 @@ void xreadCommand(client *c) { } continue; } - if (streamParseIDOrReply(c,c->argv[i],ids+i,0) != C_OK) goto cleanup; + if (streamParseIDOrReply(c,c->argv[i],ids+id_idx,0) != C_OK) + goto cleanup; } /* Try to serve the client synchronously. */