Skip to content

Commit 46f6d90

Browse files
committed
fix for writing null terminated buffers
node 0.5.10+ changed how null terminated buffers are written. The null terminator is no longer written explicitly. fixes #63
1 parent 45f2168 commit 46f6d90

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

lib/writer.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ p._ensure = function(size) {
1515
var remaining = this.buffer.length - this.offset;
1616
if(remaining < size) {
1717
var oldBuffer = this.buffer;
18-
this.buffer = Buffer(oldBuffer.length + size);
18+
this.buffer = new Buffer(oldBuffer.length + size);
1919
oldBuffer.copy(this.buffer);
2020
}
2121
}
@@ -40,20 +40,20 @@ p.addCString = function(string) {
4040
//just write a 0 for empty or null strings
4141
if(!string) {
4242
this._ensure(1);
43-
this.buffer[this.offset++] = 0;
44-
return this;
43+
} else {
44+
var len = Buffer.byteLength(string);
45+
this._ensure(len + 1); //+1 for null terminator
46+
this.buffer.write(string, this.offset, len);
47+
this.offset += len;
4548
}
46-
var len = Buffer.byteLength(string) + 1;
47-
this._ensure(len);
48-
this.buffer.write(string, this.offset);
49-
this.offset += len;
50-
this.buffer[this.offset] = 0; //add null terminator
49+
50+
this.buffer[this.offset++] = 0; // null terminator
5151
return this;
5252
}
5353

5454
p.addChar = function(char) {
5555
this._ensure(1);
56-
this.buffer.write(char, this.offset);
56+
this.buffer.write(char, this.offset, 1);
5757
this.offset++;
5858
return this;
5959
}

0 commit comments

Comments
 (0)