From 8468764895245104a53182338f943cf997ec8cd8 Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Mon, 11 Sep 2017 18:35:00 +0200 Subject: [PATCH] Bug 1317394 - Make DataView getters throw for detached array buffers in Nightly. r=anba --- js/src/builtin/DataViewObject.cpp | 20 ++++++++++++++++++++ js/src/tests/jstests.list | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/js/src/builtin/DataViewObject.cpp b/js/src/builtin/DataViewObject.cpp index ce4213fd69d3..681a312f3572 100644 --- a/js/src/builtin/DataViewObject.cpp +++ b/js/src/builtin/DataViewObject.cpp @@ -887,6 +887,16 @@ bool DataViewObject::byteLengthGetterImpl(JSContext* cx, const CallArgs& args) { Rooted thisView(cx, &args.thisv().toObject().as()); + +#ifdef NIGHTLY_BUILD + // Step 6, + if (thisView->arrayBufferEither().isDetached()) { + JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_TYPED_ARRAY_DETACHED); + return false; + } +#endif + + // Step 7. args.rval().set(DataViewObject::byteLengthValue(thisView)); return true; } @@ -902,6 +912,16 @@ bool DataViewObject::byteOffsetGetterImpl(JSContext* cx, const CallArgs& args) { Rooted thisView(cx, &args.thisv().toObject().as()); + +#ifdef NIGHTLY_BUILD + // Step 6, + if (thisView->arrayBufferEither().isDetached()) { + JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_TYPED_ARRAY_DETACHED); + return false; + } +#endif + + // Step 7. args.rval().set(DataViewObject::byteOffsetValue(thisView)); return true; } diff --git a/js/src/tests/jstests.list b/js/src/tests/jstests.list index ff7304b2705c..3e03b9d4de33 100644 --- a/js/src/tests/jstests.list +++ b/js/src/tests/jstests.list @@ -296,8 +296,8 @@ skip script test262/built-ins/WeakSet/proto-from-ctor-realm.js skip script test262/built-ins/ArrayBuffer/prototype/byteLength/detached-buffer.js # https://bugzilla.mozilla.org/show_bug.cgi?id=1317394 -skip script test262/built-ins/DataView/prototype/byteOffset/detached-buffer.js -skip script test262/built-ins/DataView/prototype/byteLength/detached-buffer.js +skip-if(release_or_beta) script test262/built-ins/DataView/prototype/byteOffset/detached-buffer.js +skip-if(release_or_beta) script test262/built-ins/DataView/prototype/byteLength/detached-buffer.js # We're still waiting for a final decision on https://github.com/tc39/ecma402/pull/84. skip script test262/intl402/Collator/10.1.1_1.js