]> zoso.dev Git - buffer.git/commitdiff
Use TypedArrayView.copyWithin() when available
authorFeross Aboukhadijeh <feross@feross.org>
Fri, 16 Feb 2018 06:46:40 +0000 (22:46 -0800)
committerFeross Aboukhadijeh <feross@feross.org>
Fri, 16 Feb 2018 06:46:40 +0000 (22:46 -0800)
Fixes https://github.com/feross/buffer/issues/174

index.js

index 7f67ccbc69d5f4105c2888fb85699e3dc6cef18f..a5b9ef51045b43a716470c6169caa1441516d1e6 100644 (file)
--- a/index.js
+++ b/index.js
@@ -1490,17 +1490,19 @@ Buffer.prototype.copy = function copy (target, targetStart, start, end) {
   }
 
   var len = end - start
-  var i
 
-  if (this === target && start < targetStart && targetStart < end) {
+  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
+    // Use built-in when available, missing from IE11
+    this.copyWithin(targetStart, start, end)
+  } else if (this === target && start < targetStart && targetStart < end) {
     // descending copy from end
-    for (i = len - 1; i >= 0; --i) {
+    for (var i = len - 1; i >= 0; --i) {
       target[i + targetStart] = this[i + start]
     }
   } else {
     Uint8Array.prototype.set.call(
       target,
-      this.subarray(start, start + len),
+      this.subarray(start, end),
       targetStart
     )
   }