From a676bc1bbf44bccd44d48d3fa082d55ac608bd83 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Fri, 14 Feb 2014 09:33:03 +0000 Subject: [PATCH] Fix typed array error message. R=dslomov@chromium.org BUG=v8:3159 LOG=N Review URL: https://codereview.chromium.org/163293002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/messages.js | 2 +- src/typedarray.js | 4 ++-- test/mjsunit/regress/regress-3159.js | 10 ++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 test/mjsunit/regress/regress-3159.js diff --git a/src/messages.js b/src/messages.js index cdf95b1..733fe95 100644 --- a/src/messages.js +++ b/src/messages.js @@ -120,7 +120,7 @@ var kMessages = { invalid_string_length: ["Invalid string length"], invalid_typed_array_offset: ["Start offset is too large:"], invalid_typed_array_length: ["Invalid typed array length"], - invalid_typed_array_alignment: ["%0", "of", "%1", "should be a multiple of", "%3"], + invalid_typed_array_alignment: ["%0", " of ", "%1", " should be a multiple of ", "%2"], typed_array_set_source_too_large: ["Source is too large"], typed_array_set_negative_offset: diff --git a/src/typedarray.js b/src/typedarray.js index c0f07ed..0c0cb71 100644 --- a/src/typedarray.js +++ b/src/typedarray.js @@ -58,7 +58,7 @@ macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) if (offset % ELEMENT_SIZE !== 0) { throw MakeRangeError("invalid_typed_array_alignment", - "start offset", "NAME", ELEMENT_SIZE); + ["start offset", "NAME", ELEMENT_SIZE]); } if (offset > bufferByteLength) { throw MakeRangeError("invalid_typed_array_offset"); @@ -70,7 +70,7 @@ macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) if (IS_UNDEFINED(length)) { if (bufferByteLength % ELEMENT_SIZE !== 0) { throw MakeRangeError("invalid_typed_array_alignment", - "byte length", "NAME", ELEMENT_SIZE); + ["byte length", "NAME", ELEMENT_SIZE]); } newByteLength = bufferByteLength - offset; newLength = newByteLength / ELEMENT_SIZE; diff --git a/test/mjsunit/regress/regress-3159.js b/test/mjsunit/regress/regress-3159.js new file mode 100644 index 0000000..cfc8a39 --- /dev/null +++ b/test/mjsunit/regress/regress-3159.js @@ -0,0 +1,10 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +try { + new Uint32Array(new ArrayBuffer(1), 2, 3); +} catch (e) { + assertEquals("start offset of Uint32Array should be a multiple of 4", + e.message); +} -- 2.7.4