Skip to content

Commit fcb6e8d

Browse files
committed
Fix support for any valid ArrayDataView
1 parent 9a66652 commit fcb6e8d

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

lib/encode.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ encode._encode = function (buffers, data) {
4545
case 'string': encode.string(buffers, data); break
4646
case 'number': encode.number(buffers, data); break
4747
case 'boolean': encode.number(buffers, data); break
48-
case 'typedarray': encode.buffer(buffers, Buffer.from(data.buffer)); break
48+
case 'typedarray': encode.buffer(buffers, Buffer.from(data.buffer, data.byteOffset, data.byteLength)); break
4949
case 'arraybuffer': encode.buffer(buffers, Buffer.from(data)); break
5050
}
5151
}

test/encode.test.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,24 @@ test('bencode#encode()', function (t) {
161161
var data = new Float32Array([ 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0 ])
162162
var result = bencode.decode(bencode.encode(data))
163163
var expected = Buffer.from(data.buffer)
164-
console.log(result)
164+
t.plan(1)
165+
t.deepEqual(result, expected)
166+
})
167+
168+
t.test('should encode DataView as buffer', function (t) {
169+
var data = new Uint8Array([ 1, 2, 3, 4, 5, 6, 7, 8, 9 ])
170+
var view = new DataView(data.buffer)
171+
var result = bencode.decode(bencode.encode(view))
172+
var expected = Buffer.from(data.buffer)
173+
t.plan(1)
174+
t.deepEqual(result, expected)
175+
})
176+
177+
t.test('should encode Uint8Array subarray properly', function (t) {
178+
var data = new Uint8Array([ 1, 2, 3, 4, 5, 6, 7, 8, 9 ])
179+
var subData = data.subarray(5)
180+
var result = bencode.decode(bencode.encode(subData))
181+
var expected = Buffer.from(subData.buffer, subData.byteOffset, subData.byteLength)
165182
t.plan(1)
166183
t.deepEqual(result, expected)
167184
})

0 commit comments

Comments
 (0)