From c317606b0abafe5041ae6c636ccc8e9f1b29a71c Mon Sep 17 00:00:00 2001 From: brianc Date: Wed, 20 Jul 2011 15:32:47 -0500 Subject: [PATCH] fix writing empty string to buffer. closes gh-39 --- lib/writer.js | 7 ++++++- test/unit/writer-tests.js | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/writer.js b/lib/writer.js index d3f34d28..fe539ef0 100644 --- a/lib/writer.js +++ b/lib/writer.js @@ -37,7 +37,12 @@ p.addInt16 = function(num) { } p.addCString = function(string) { - var string = string || ""; + //just write a 0 for empty or null strings + if(!string) { + this._ensure(1); + this.buffer[this.offset++] = 0; + return this; + } var len = Buffer.byteLength(string) + 1; this._ensure(len); this.buffer.write(string, this.offset); diff --git a/test/unit/writer-tests.js b/test/unit/writer-tests.js index be926302..e5ade320 100644 --- a/test/unit/writer-tests.js +++ b/test/unit/writer-tests.js @@ -66,6 +66,13 @@ test('cString', function() { var result = subject.addCString().join(); assert.equalBuffers(result, [0]) }) + + test('writes two empty cstrings', function() { + var subject = new Writer(); + var result = subject.addCString("").addCString("").join(); + assert.equalBuffers(result, [0, 0]) + }) + test('writes non-empty cstring', function() { var subject = new Writer();