]> zoso.dev Git - buffer.git/commitdiff
Fix copy with typed arrays
authorDevon Govett <devongovett@gmail.com>
Tue, 8 Apr 2014 07:26:20 +0000 (00:26 -0700)
committerDevon Govett <devongovett@gmail.com>
Tue, 8 Apr 2014 07:26:20 +0000 (00:26 -0700)
Creating a new `Uint8Array` from the `this.buffer` doesn't work if `subarray` had previously been used (e.g. `slice`), since `this.buffer` still would refer to the start of the buffer, not the start of the subarray. We can use `subarray` here instead, which keeps previous subarray indices intact.

index.js

index 911507bdf01b17c228339f0531448f82c3df85cd..57e117825525a6bb8aed228328e32c259d42916c 100644 (file)
--- a/index.js
+++ b/index.js
@@ -395,7 +395,7 @@ Buffer.prototype.copy = function (target, target_start, start, end) {
     for (var i = 0; i < len; i++)
       target[i + target_start] = this[i + start]
   } else {
-    target._set(new Uint8Array(this.buffer, start, len), target_start)
+    target._set(this.subarray(start, start + len), target_start)
   }
 }