]> zoso.dev Git - buffer.git/commitdiff
add failing test for mixed signed input
authorDaniel Cousens <github@dcousens.com>
Wed, 28 May 2014 11:25:23 +0000 (21:25 +1000)
committerDaniel Cousens <github@dcousens.com>
Wed, 28 May 2014 11:27:46 +0000 (21:27 +1000)
index.js
test/basic.js

index 92769c99bc085f934f37eaf382d6b1a35416c73f..a4ba7647e5c9c1e579f26de88993955d94eefbed 100644 (file)
--- a/index.js
+++ b/index.js
@@ -93,8 +93,12 @@ function Buffer (subject, encoding, noZero) {
     for (i = 0; i < length; i++) {
       if (Buffer.isBuffer(subject))
         buf[i] = subject.readUInt8(i)
-      else
-        buf.writeInt8(subject[i], i)
+      else {
+        if (subject[i] < 0)
+          buf[i] = subject[i] + 256
+        else
+          buf[i] = subject[i]
+      }
     }
   } else if (type === 'string') {
     buf.write(subject, 0, encoding)
index 53994fd8cfbf98cacf3f9d9965bd59f7d33f1d33..a369c6244ec6ff82946a79a0993b37a8b5d66a9f 100644 (file)
@@ -17,6 +17,14 @@ test('new buffer from array w/ negatives', function (t) {
   t.end()
 })
 
+test('new buffer from array with mixed signed input', function (t) {
+  t.equal(
+    new B([-255, 255, -128, 128, 512, -512, 511, -511]).toString('hex'),
+    '01ff80800000ff01'
+  )
+  t.end()
+})
+
 test('new buffer from string', function (t) {
   t.equal(
     new B('hey', 'utf8').toString(),