From 103a450d3a6ca5281a5ac6579dfecbebe748f745 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 16 May 2011 15:00:33 -0700 Subject: [PATCH] Remove 'binary' encoding assert - add tests Don't write large characters to buffers with binary encoding. You will be silently injured. --- src/node.cc | 1 - test/simple/test-buffer.js | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/node.cc b/src/node.cc index e76b0e217d..22c278835a 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1203,7 +1203,6 @@ ssize_t DecodeWrite(char *buf, for (size_t i = 0; i < buflen; i++) { unsigned char *b = reinterpret_cast(&twobytebuf[i]); - assert(b[1] == 0); buf[i] = b[0]; } diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js index 11bc58b165..1aa4611010 100644 --- a/test/simple/test-buffer.js +++ b/test/simple/test-buffer.js @@ -505,3 +505,18 @@ assert.equal(0x6f, z[1]); var b = new SlowBuffer(10); b.write('あいうえお', 'ucs2'); assert.equal(b.toString('ucs2'), 'あいうえお'); + +// Binary encoding should write only one byte per character. +var b = Buffer([0xde, 0xad, 0xbe, 0xef]); +var s = String.fromCharCode(0xffff); +b.write(s, 0, 'binary') +assert.equal(0xff, b[0]); +assert.equal(0xad, b[1]); +assert.equal(0xbe, b[2]); +assert.equal(0xef, b[3]); +s = String.fromCharCode(0xaaee); +b.write(s, 0, 'binary') +assert.equal(0xee, b[0]); +assert.equal(0xad, b[1]); +assert.equal(0xbe, b[2]); +assert.equal(0xef, b[3]);