return out
}
-// TODO: add test that modifying the new buffer slice will modify memory in the
-// original buffer! Use code from:
// http://nodejs.org/api/buffer.html#buffer_buf_slice_start_end
Buffer.prototype.slice = function (start, end) {
var len = this.length
if (browserSupport) {
return augment(this.subarray(start, end))
} else {
- // TODO: slicing works, with limitations (no parent tracking/update)
- // https://github.com/feross/native-buffer-browserify/issues/9
var sliceLen = end - start
var newBuf = new Buffer(sliceLen, undefined, true)
for (var i = 0; i < sliceLen; i++) {
--- /dev/null
+var B = require('../index.js').Buffer
+var test = require('tape')
+
+test('modifying buffer created by .slice() modifies original memory', function (t) {
+ var buf1 = new Buffer(26)
+ for (var i = 0 ; i < 26 ; i++) {
+ buf1[i] = i + 97 // 97 is ASCII a
+ }
+
+ var buf2 = buf1.slice(0, 3)
+ t.equal(buf2.toString('ascii', 0, buf2.length), 'abc')
+
+ buf2[0] = '!'.charCodeAt(0)
+ t.equal(buf1.toString('ascii', 0, buf2.length), '!bc')
+
+ t.end()
+})
+
+test('modifying parent buffer modifies .slice() buffer\'s memory', function (t) {
+ var buf1 = new Buffer(26)
+ for (var i = 0 ; i < 26 ; i++) {
+ buf1[i] = i + 97 // 97 is ASCII a
+ }
+
+ var buf2 = buf1.slice(0, 3)
+ t.equal(buf2.toString('ascii', 0, buf2.length), 'abc')
+
+ buf1[0] = '!'.charCodeAt(0)
+ t.equal(buf2.toString('ascii', 0, buf2.length), '!bc')
+
+ t.end()
+})