]> zoso.dev Git - buffer.git/commitdiff
Fix single character fast path
authorVolker Mische <volker.mische@gmail.com>
Sat, 20 Jan 2018 23:23:56 +0000 (00:23 +0100)
committerVolker Mische <volker.mische@gmail.com>
Sun, 21 Jan 2018 02:03:55 +0000 (03:03 +0100)
This fixed is based on Node.js' commit d4f00fe1098b0d7b8444565e741d8b457fd9c091
https://github.com/nodejs/node/commit/d4f00fe1098b0d7b8444565e741d8b457fd9c091

index.js
test/node/test-buffer-alloc.js

index 042a7875cdaa22e0ebd922b53acee4d4ab94c1dd..f8f5184fa55cecddda9778df86fc9f06eea09f22 100644 (file)
--- a/index.js
+++ b/index.js
@@ -1512,18 +1512,20 @@ Buffer.prototype.fill = function fill (val, start, end, encoding) {
       encoding = end
       end = this.length
     }
-    if (val.length === 1) {
-      var code = val.charCodeAt(0)
-      if (code < 256) {
-        val = code
-      }
-    }
     if (encoding !== undefined && typeof encoding !== 'string') {
       throw new TypeError('encoding must be a string')
     }
     if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
       throw new TypeError('Unknown encoding: ' + encoding)
     }
+    if (val.length === 1) {
+      var code = val.charCodeAt(0)
+      if ((encoding === 'utf8' && code < 128) ||
+          encoding === 'latin1') {
+        // Fast path: If `val` fits into a single byte, use that numeric value.
+        val = code
+      }
+    }
   } else if (typeof val === 'number') {
     val = val & 255
   }
index d7d4ee46f301c61e2ad4576395826eb79aad0e55..bbba135b002e4652f7e237a8aee95508a8784c4d 100644 (file)
@@ -1018,14 +1018,14 @@ common.expectsError(() => {
   code: 'ERR_INVALID_ARG_VALUE',
   type: TypeError
 });
-/*
+
 common.expectsError(() => {
   Buffer.alloc(0x1000, 'c', 'hex');
 }, {
   code: 'ERR_INVALID_ARG_VALUE',
   type: TypeError
 });
-*/
+
 common.expectsError(() => {
   Buffer.alloc(1, Buffer.alloc(0));
 }, {