]> zoso.dev Git - buffer.git/commitdiff
Fixed write functions, thanks to @ysangkok
authorRomain Beauxis <toots@rastageeks.org>
Thu, 20 Sep 2012 10:46:36 +0000 (12:46 +0200)
committerRomain Beauxis <toots@rastageeks.org>
Thu, 20 Sep 2012 10:46:36 +0000 (12:46 +0200)
index.js
test/buffer.js

index 4347b481a59e1872a191d0ad5e436cb872126a81..f63a41528de06ee626c2e41090bf3f34b7716ab0 100644 (file)
--- a/index.js
+++ b/index.js
@@ -931,7 +931,7 @@ Buffer.prototype.writeUInt8 = function(value, offset, noAssert) {
     verifuint(value, 0xff);
   }
 
-  buffer[offset] = value;
+  buffer.parent[buffer.offset + offset] = value;
 };
 
 function writeUInt16(buffer, value, offset, isBigEndian, noAssert) {
@@ -952,11 +952,11 @@ function writeUInt16(buffer, value, offset, isBigEndian, noAssert) {
   }
 
   if (isBigEndian) {
-    buffer[offset] = (value & 0xff00) >>> 8;
-    buffer[offset + 1] = value & 0x00ff;
+    buffer.parent[buffer.offset + offset] = (value & 0xff00) >>> 8;
+    buffer.parent[buffer.offset + offset + 1] = value & 0x00ff;
   } else {
-    buffer[offset + 1] = (value & 0xff00) >>> 8;
-    buffer[offset] = value & 0x00ff;
+    buffer.parent[buffer.offset + offset + 1] = (value & 0xff00) >>> 8;
+    buffer.parent[buffer.offset + offset] = value & 0x00ff;
   }
 }
 
@@ -986,15 +986,15 @@ function writeUInt32(buffer, value, offset, isBigEndian, noAssert) {
   }
 
   if (isBigEndian) {
-    buffer[offset] = (value >>> 24) & 0xff;
-    buffer[offset + 1] = (value >>> 16) & 0xff;
-    buffer[offset + 2] = (value >>> 8) & 0xff;
-    buffer[offset + 3] = value & 0xff;
+    buffer.parent[buffer.offset + offset] = (value >>> 24) & 0xff;
+    buffer.parent[buffer.offset + offset + 1] = (value >>> 16) & 0xff;
+    buffer.parent[buffer.offset + offset + 2] = (value >>> 8) & 0xff;
+    buffer.parent[buffer.offset + offset + 3] = value & 0xff;
   } else {
-    buffer[offset + 3] = (value >>> 24) & 0xff;
-    buffer[offset + 2] = (value >>> 16) & 0xff;
-    buffer[offset + 1] = (value >>> 8) & 0xff;
-    buffer[offset] = value & 0xff;
+    buffer.parent[buffer.offset + offset + 3] = (value >>> 24) & 0xff;
+    buffer.parent[buffer.offset + offset + 2] = (value >>> 16) & 0xff;
+    buffer.parent[buffer.offset + offset + 1] = (value >>> 8) & 0xff;
+    buffer.parent[buffer.offset + offset] = value & 0xff;
   }
 }
 
index aa450478af50658dd1acba44732fd416d834ef3d..f5da95b7a920cc08377c55b6262cc0eb9ab4185f 100644 (file)
@@ -72,3 +72,25 @@ test('hex buffer to ascii', function (t) {
     );
     t.end();
 });
+
+test("hex of write{Uint,Int}{8,16,32}{LE,BE}", function(t) {
+    t.plan(2*2*2+2);
+    ["UInt","Int"].forEach(function(x){
+        [8,16,32].forEach(function(y){
+            var endianesses = (y === 8) ? [""] : ["LE","BE"];
+            endianesses.forEach(function(z){
+                var v1  = new buffer.Buffer(y / 8);
+                var v2  = new Buffer(y / 8);
+                var fn  = "write" + x + y + z;
+                var val = (x === "Int") ? -3 : 3;
+                v1[fn](val, 0);
+                v2[fn](val, 0);
+                t.equal(
+                    v1.toString("hex"),
+                    v2.toString("hex")
+                );
+            });
+        });
+    });
+    t.end();
+});