]> zoso.dev Git - buffer.git/commitdiff
do not encode partial code units to utf16
authorJesse Tane <jesse.tane@gmail.com>
Tue, 16 Dec 2014 00:17:22 +0000 (19:17 -0500)
committerJesse Tane <jesse.tane@gmail.com>
Mon, 22 Dec 2014 22:44:16 +0000 (17:44 -0500)
index.js

index 38b20ba50cb779d69b319086cbf1926f07e2ffa1..1a7144a71a552153dc51aab23aa5f975651c2391 100644 (file)
--- a/index.js
+++ b/index.js
@@ -360,7 +360,7 @@ function base64Write (buf, string, offset, length) {
 }
 
 function utf16leWrite (buf, string, offset, length) {
-  var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length, 2)
+  var charsWritten = blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length, 2)
   return charsWritten
 }
 
@@ -1198,10 +1198,13 @@ function asciiToBytes (str) {
   return byteArray
 }
 
-function utf16leToBytes (str) {
+function utf16leToBytes (str, units) {
   var c, hi, lo
   var byteArray = []
   for (var i = 0; i < str.length; i++) {
+
+    if ((units -= 2) < 0) break
+
     c = str.charCodeAt(i)
     hi = c >> 8
     lo = c % 256