From f619a066c6c4b2d82477a8867a7a2d4ac1004aba Mon Sep 17 00:00:00 2001 From: Kagami Hiiragi Date: Wed, 11 Feb 2015 18:14:22 +0300 Subject: [PATCH] Fix error.decode API --- lib/messages.js | 9 ++++++--- tests/unit.js | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/messages.js b/lib/messages.js index dc8243e..27e9125 100644 --- a/lib/messages.js +++ b/lib/messages.js @@ -386,9 +386,12 @@ var error = exports.error = { var vectorLength = decodedVectorLength.value; var rest = decodedVectorLength.rest; assert(rest.length >= vectorLength, "Buffer is too small"); - var vector = new Buffer(vectorLength); - rest.copy(vector); - rest = rest.slice(vectorLength); + var vector = null; + if (vectorLength) { + vector = new Buffer(vectorLength); + rest.copy(vector); + rest = rest.slice(vectorLength); + } var decodedErrorText = structs.var_str.decode(rest); var length = ( diff --git a/tests/unit.js b/tests/unit.js index 8f1b004..21d0574 100644 --- a/tests/unit.js +++ b/tests/unit.js @@ -576,7 +576,7 @@ describe("Message types", function() { var res = error.decode(encoded); expect(res.fatal).to.equal(0); expect(res.banTime).to.equal(0); - expect(res.vector).to.have.length(0); + expect(res.vector).to.not.exist; expect(res.errorText).to.equal("test"); expect(res.length).to.equal(8);