Discard consumed part of buffer less often

master
Pieter Noordhuis 2011-01-19 18:01:01 +01:00
parent 5962a2de17
commit f6a501001c
1 changed files with 4 additions and 9 deletions

View File

@ -538,15 +538,10 @@ int redisReplyReaderGetReply(void *reader, void **reply) {
if (processItem(r) < 0)
break;
/* Discard the consumed part of the buffer. */
if (r->pos > 0) {
if (r->pos == r->len) {
/* sdsrange has a quirck on this edge case. */
sdsfree(r->buf);
r->buf = sdsempty();
} else {
r->buf = sdsrange(r->buf,r->pos,r->len);
}
/* Discard part of the buffer when we've consumed at least 1k, to avoid
* doing unnecessary calls to memmove() in sds.c. */
if (r->pos >= 1024) {
r->buf = sdsrange(r->buf,r->pos,r->len);
r->pos = 0;
r->len = sdslen(r->buf);
}