]> git.kaiwu.me - njs.git/commitdiff
Fixed returned value for Buffer.prototype.write* functions.
authorAlexander Borisov <alexander.borisov@nginx.com>
Mon, 19 Oct 2020 12:51:37 +0000 (15:51 +0300)
committerAlexander Borisov <alexander.borisov@nginx.com>
Mon, 19 Oct 2020 12:51:37 +0000 (15:51 +0300)
All Buffer.prototype.write* functions must return offset plus
the number of bytes written.

The issue was introduced in 27bb9caf186c.

src/njs_buffer.c
src/test/njs_unit_test.c

index 554425958bac767a5fc5bf8ae5a91a45afe88445..1142cf7ad37984d7576d7c47ecb51e8e630ea54e 100644 (file)
@@ -1331,7 +1331,7 @@ njs_buffer_prototype_write_int(njs_vm_t *vm, njs_value_t *args,
         break;
     }
 
-    njs_set_undefined(&vm->retval);
+    njs_set_number(&vm->retval, index + size);
 
     return NJS_OK;
 }
index 435fb2adf552458cfa82ad0e2cc45f0ea7a9552b..ea0055749f4e7b45fe29006ec3d96e6410017854 100644 (file)
@@ -19191,7 +19191,11 @@ static njs_unit_test_t  njs_test[] =
               "        if (size > 1) { rmethod += endianness; wmethod += endianness; };"
               "        var v = 0x7abbccddeeff & (size * 8 - 1);"
               ""
-              "        buf[wgmethod](v, offset, size);"
+              "        var ret = buf[wgmethod](v, offset, size);"
+              "        if(ret !== offset + size) {"
+              "            throw Error(`${wgmethod} returned ${ret}, need ${offset + size}`);"
+              "        }"
+              ""
               "        var gv = buf[rgmethod](offset, size);"
               ""
               "        buf.fill(0);"