diff --git a/index.js b/index.js index 6a6159c9a5..ec3541085c 100644 --- a/index.js +++ b/index.js @@ -68,7 +68,7 @@ RedisReplyParser.prototype.execute = function (incoming_buf) { break; case "integer line": if (incoming_buf[pos] === 13) { - this.send_reply(parseInt(small_toString(this.return_buffer), 10)); + this.send_reply(+small_toString(this.return_buffer)); this.state = "final lf"; } else { this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; @@ -114,7 +114,7 @@ RedisReplyParser.prototype.execute = function (incoming_buf) { break; case "multi bulk count lf": if (incoming_buf[pos] === 10) { // \n - this.multi_bulk_length = parseInt(small_toString(this.tmp_buffer), 10); + this.multi_bulk_length = +small_toString(this.tmp_buffer); this.multi_bulk_replies = []; this.state = "type"; if (0 == this.multi_bulk_length) { @@ -138,10 +138,13 @@ RedisReplyParser.prototype.execute = function (incoming_buf) { break; case "bulk lf": if (incoming_buf[pos] === 10) { // \n - this.bulk_length = parseInt(small_toString(this.tmp_buffer), 10); + this.bulk_length = +small_toString(this.tmp_buffer); if (this.bulk_length === -1) { this.send_reply(null); this.state = "type"; + } else if (this.bulk_length === 0) { + this.send_reply(new Buffer("")); + this.state = "final cr"; } else { this.state = "bulk data"; if (this.bulk_length > this.return_buffer.length) {