Make moveToNextTask non-recursive
This commit is contained in:
parent
9c4ee606d6
commit
183220bf60
@ -186,8 +186,7 @@ static char *readLine(redisReader *r, int *_len) {
|
|||||||
|
|
||||||
static void moveToNextTask(redisReader *r) {
|
static void moveToNextTask(redisReader *r) {
|
||||||
redisReadTask *cur, *prv;
|
redisReadTask *cur, *prv;
|
||||||
assert(r->ridx >= 0);
|
while (r->ridx >= 0) {
|
||||||
|
|
||||||
/* Return a.s.a.p. when the stack is now empty. */
|
/* Return a.s.a.p. when the stack is now empty. */
|
||||||
if (r->ridx == 0) {
|
if (r->ridx == 0) {
|
||||||
r->ridx--;
|
r->ridx--;
|
||||||
@ -199,13 +198,14 @@ static void moveToNextTask(redisReader *r) {
|
|||||||
assert(prv->type == REDIS_REPLY_ARRAY);
|
assert(prv->type == REDIS_REPLY_ARRAY);
|
||||||
if (cur->idx == prv->elements-1) {
|
if (cur->idx == prv->elements-1) {
|
||||||
r->ridx--;
|
r->ridx--;
|
||||||
moveToNextTask(r);
|
|
||||||
} else {
|
} else {
|
||||||
/* Reset the type because the next item can be anything */
|
/* Reset the type because the next item can be anything */
|
||||||
assert(cur->idx < prv->elements);
|
assert(cur->idx < prv->elements);
|
||||||
cur->type = -1;
|
cur->type = -1;
|
||||||
cur->elements = -1;
|
cur->elements = -1;
|
||||||
cur->idx++;
|
cur->idx++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user