Fix triple buffer slice bug
authorRyan Dahl <ry@tinyclouds.org>
Wed, 14 Apr 2010 07:36:34 +0000 (00:36 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Wed, 14 Apr 2010 07:36:34 +0000 (00:36 -0700)
src/node_buffer.cc
test/simple/test-buffer.js

index f524778..b9d7460 100644 (file)
@@ -163,7 +163,7 @@ Buffer::Buffer(Buffer *parent, size_t start, size_t end) : ObjectWrap() {
   blob_ref(blob_);
 
   assert(start <= end);
-  off_ = start;
+  off_ = parent->off_ + start;
   length_ = end - start;
   assert(length_ <= parent->length_);
 
index 084c268..17d6f08 100644 (file)
@@ -95,3 +95,14 @@ var slice = buffer.toString('utf8', 0, size);
 assert.equal(slice, testValue);
 
 
+// Test triple  slice
+var a = new Buffer(8);
+for (var i = 0; i < 8; i++) a[i] = i;
+var b = a.slice(4,8);
+assert.equal(4, b[0]);
+assert.equal(5, b[1]);
+assert.equal(6, b[2]);
+assert.equal(7, b[3]);
+var c = b.slice(2 , 4);
+assert.equal(6, c[0]);
+assert.equal(7, c[1]);