Merge branch 'v0.4'
authorRyan Dahl <ry@tinyclouds.org>
Mon, 4 Apr 2011 06:42:56 +0000 (23:42 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Mon, 4 Apr 2011 06:42:56 +0000 (23:42 -0700)
Conflicts:
src/node_version.h
test/simple/test-buffer.js

1  2 
doc/api/buffers.markdown
doc/api/fs.markdown
lib/buffer.js
lib/events.js
lib/fs.js
lib/http.js
src/node_file.cc
test/simple/test-buffer.js
wscript

Simple merge
Simple merge
diff --cc lib/buffer.js
Simple merge
diff --cc lib/events.js
@@@ -137,15 -137,14 +137,18 @@@ EventEmitter.prototype.addListener = fu
  EventEmitter.prototype.on = EventEmitter.prototype.addListener;
  
  EventEmitter.prototype.once = function(type, listener) {
 +  if ('function' !== typeof listener) {
 +    throw new Error('.once only takes instances of Function');
 +  }
 +
    var self = this;
-   self.on(type, function g() {
+   function g() {
      self.removeListener(type, g);
      listener.apply(this, arguments);
-   });
+   };
+   g.listener = listener;
+   self.on(type, g);
  
    return this;
  };
diff --cc lib/fs.js
Simple merge
diff --cc lib/http.js
Simple merge
Simple merge
@@@ -432,42 -432,62 +432,102 @@@ assert.equal(12, Buffer.byteLength('Il 
  // slice(0,0).length === 0
  assert.equal(0, Buffer('hello').slice(0, 0).length);
  
 +// test hex toString
 +console.log('Create hex string from buffer');
 +var hexb = new Buffer(256);
 +for (var i = 0; i < 256; i ++) {
 +  hexb[i] = i;
 +}
 +var hexStr = hexb.toString('hex');
 +assert.equal(hexStr,
 +             '000102030405060708090a0b0c0d0e0f'+
 +             '101112131415161718191a1b1c1d1e1f'+
 +             '202122232425262728292a2b2c2d2e2f'+
 +             '303132333435363738393a3b3c3d3e3f'+
 +             '404142434445464748494a4b4c4d4e4f'+
 +             '505152535455565758595a5b5c5d5e5f'+
 +             '606162636465666768696a6b6c6d6e6f'+
 +             '707172737475767778797a7b7c7d7e7f'+
 +             '808182838485868788898a8b8c8d8e8f'+
 +             '909192939495969798999a9b9c9d9e9f'+
 +             'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf'+
 +             'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf'+
 +             'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf'+
 +             'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'+
 +             'e0e1e2e3e4e5e6e7e8e9eaebecedeeef'+
 +             'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff');
 +
 +console.log('Create buffer from hex string');
 +var hexb2 = new Buffer(hexStr, 'hex');
 +for (var i = 0; i < 256; i ++) {
 +  assert.equal(hexb2[i], hexb[i]);
 +}
 +
 +// test an invalid slice end.
 +console.log('Try to slice off the end of the buffer');
 +var b = new Buffer([1,2,3,4,5]);
 +var b2 = b.toString('hex', 1, 10000);
 +var b3 = b.toString('hex', 1, 5);
 +var b4 = b.toString('hex', 1);
 +assert.equal(b2, b3);
 +assert.equal(b2, b4);
++
+ // Test slice on SlowBuffer GH-843
+ var SlowBuffer = process.binding('buffer').SlowBuffer;
+ function buildSlowBuffer (data) {
+   if (Array.isArray(data)) {
+     var buffer = new SlowBuffer(data.length);
+     data.forEach(function(v,k) {
+       buffer[k] = v;
+     });
+     return buffer;
+   };
+   return null;
+ }
+ var x = buildSlowBuffer([0x81,0xa3,0x66,0x6f,0x6f,0xa3,0x62,0x61,0x72]);
+ console.log(x.inspect())
+ assert.equal('<SlowBuffer 81 a3 66 6f 6f a3 62 61 72>', x.inspect());
+ var z = x.slice(4);
+ console.log(z.inspect())
+ console.log(z.length)
+ assert.equal(5, z.length);
+ assert.equal(0x6f, z[0]);
+ assert.equal(0xa3, z[1]);
+ assert.equal(0x62, z[2]);
+ assert.equal(0x61, z[3]);
+ assert.equal(0x72, z[4]);
+ var z = x.slice(0);
+ console.log(z.inspect())
+ console.log(z.length)
+ assert.equal(z.length, x.length);
+ var z = x.slice(0, 4);
+ console.log(z.inspect())
+ console.log(z.length)
+ assert.equal(4, z.length);
+ assert.equal(0x81, z[0]);
+ assert.equal(0xa3, z[1]);
+ var z = x.slice(0, 9);
+ console.log(z.inspect())
+ console.log(z.length)
+ assert.equal(9, z.length);
+ var z = x.slice(1, 4);
+ console.log(z.inspect())
+ console.log(z.length)
+ assert.equal(3, z.length);
+ assert.equal(0xa3, z[0]);
+ var z = x.slice(2, 4);
+ console.log(z.inspect())
+ console.log(z.length)
+ assert.equal(2, z.length);
+ assert.equal(0x66, z[0]);
+ assert.equal(0x6f, z[1]);
diff --cc wscript
Simple merge