From be24eb6e23b4e5f9ede09f01f224af54c3b17dfc Mon Sep 17 00:00:00 2001 From: Chu Hoang Date: Fri, 21 Oct 2016 10:02:08 +0100 Subject: [PATCH] Fixed javascript helper for typed arrays of scalars not taking into account underlying buffer's byte offset. --- src/idl_gen_js.cpp | 2 +- tests/monster_test.bfbs | Bin 3320 -> 3320 bytes tests/monster_test_generated.js | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/idl_gen_js.cpp b/src/idl_gen_js.cpp index fec57802989..23fd52c576f 100644 --- a/src/idl_gen_js.cpp +++ b/src/idl_gen_js.cpp @@ -581,7 +581,7 @@ void GenStruct(const Parser &parser, StructDef &struct_def, std::string *code_pt code += object_name + ".prototype." + MakeCamel(field.name, false); code += "Array = function() {\n" + offset_prefix; code += "new " + GenType(vectorType) + "Array(this.bb.bytes().buffer, " - "this.bb.__vector(this.bb_pos + offset), " + "this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), " "this.bb.__vector_len(this.bb_pos + offset)) : null;\n};\n\n"; } } diff --git a/tests/monster_test.bfbs b/tests/monster_test.bfbs index 41d9edb1c43c2965eddd178a73fa1c7c08409a7c..66d3ee8f215a67b4978d70df9bdb2e6d344e89b8 100644 GIT binary patch delta 53 zcmew%`9pF62af{-1A`9`vjFjA6%G>#4j?0~C^I!LC8rX|Wcc>`|9>FGv^j!f0Sf>~ CpACNi delta 52 zcmew%`9pF6hYAk^1A_z*%K$M45T_Morsk#OR05d{hkpP652TnT^Kh7Kj^J3p0suN8 B4C4R* diff --git a/tests/monster_test_generated.js b/tests/monster_test_generated.js index 774882d7c35..6789ebb42e7 100644 --- a/tests/monster_test_generated.js +++ b/tests/monster_test_generated.js @@ -693,7 +693,7 @@ MyGame.Example.Monster.prototype.inventoryLength = function() { */ MyGame.Example.Monster.prototype.inventoryArray = function() { var offset = this.bb.__offset(this.bb_pos, 14); - return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; }; /** @@ -839,7 +839,7 @@ MyGame.Example.Monster.prototype.testnestedflatbufferLength = function() { */ MyGame.Example.Monster.prototype.testnestedflatbufferArray = function() { var offset = this.bb.__offset(this.bb_pos, 30); - return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; }; /** @@ -1080,7 +1080,7 @@ MyGame.Example.Monster.prototype.testarrayofboolsLength = function() { */ MyGame.Example.Monster.prototype.testarrayofboolsArray = function() { var offset = this.bb.__offset(this.bb_pos, 52); - return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; }; /**