Merge remote branch 'origin/v0.4'
authorRyan Dahl <ry@tinyclouds.org>
Thu, 8 Sep 2011 00:51:33 +0000 (17:51 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Thu, 8 Sep 2011 00:51:33 +0000 (17:51 -0700)
Conflicts:
lib/net.js
test/simple/test-buffer.js

1  2 
src/node_buffer.cc
test/simple/test-buffer.js

Simple merge
@@@ -621,50 -553,22 +621,69 @@@ assert.equal(written, 9)
  written = buf.write('あいう\0'); // 3bytes * 3 + 1byte
  assert.equal(written, 10);
  
 +// #243 Test write() with maxLength
 +var buf = new Buffer(4);
 +buf.fill(0xFF);
 +var written = buf.write('abcd', 1, 2, 'utf8');
 +console.log(buf);
 +assert.equal(written, 2);
 +assert.equal(buf[0], 0xFF);
 +assert.equal(buf[1], 0x61);
 +assert.equal(buf[2], 0x62);
 +assert.equal(buf[3], 0xFF);
 +
 +buf.fill(0xFF);
 +written = buf.write('abcd', 1, 4);
 +console.log(buf);
 +assert.equal(written, 3);
 +assert.equal(buf[0], 0xFF);
 +assert.equal(buf[1], 0x61);
 +assert.equal(buf[2], 0x62);
 +assert.equal(buf[3], 0x63);
 +
 +buf.fill(0xFF);
 +written = buf.write('abcd', 'utf8', 1, 2);  // legacy style
 +console.log(buf);
 +assert.equal(written, 2);
 +assert.equal(buf[0], 0xFF);
 +assert.equal(buf[1], 0x61);
 +assert.equal(buf[2], 0x62);
 +assert.equal(buf[3], 0xFF);
 +
 +buf.fill(0xFF);
 +written = buf.write('abcdef', 1, 2, 'hex');
 +console.log(buf);
 +assert.equal(written, 2);
 +assert.equal(buf[0], 0xFF);
 +assert.equal(buf[1], 0xAB);
 +assert.equal(buf[2], 0xCD);
 +assert.equal(buf[3], 0xFF);
 +
 +buf.fill(0xFF);
 +written = buf.write('abcd', 0, 2, 'ucs2');
 +console.log(buf);
 +assert.equal(written, 2);
 +assert.equal(buf[0], 0x61);
 +assert.equal(buf[1], 0x00);
 +assert.equal(buf[2], 0xFF);
 +assert.equal(buf[3], 0xFF);
 +
+ // test for buffer overrun
+ buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
+ var sub = buf.slice(0, 4);         // length: 4
+ written = sub.write('12345', 'binary');
+ assert.equal(written, 4);
+ assert.equal(buf[4], 0);
+ // test for _charsWritten
+ buf = new Buffer(9);
+ buf.write('あいうえ', 'utf8'); // 3bytes * 4
+ assert.equal(Buffer._charsWritten, 3);
+ buf.write('あいうえお', 'ucs2'); // 2bytes * 5
+ assert.equal(Buffer._charsWritten, 4);
+ buf.write('0123456789', 'ascii');
+ assert.equal(Buffer._charsWritten, 9);
+ buf.write('0123456789', 'binary');
+ assert.equal(Buffer._charsWritten, 9);
+ buf.write('123456', 'base64');
+ assert.equal(Buffer._charsWritten, 6);