From 4afb1fff63f99e144d977a2276f5ee3fac1f0de7 Mon Sep 17 00:00:00 2001 From: mingyix <13926077+mingyix@user.noreply.gitee.com> Date: Mon, 18 Mar 2024 17:47:13 +0800 Subject: [PATCH] [fixbug][es6/typedarray-indexing.js]If IsDetachedBuffer expected typeError --- ecmascript/builtins/builtins_typedarray.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ecmascript/builtins/builtins_typedarray.cpp b/ecmascript/builtins/builtins_typedarray.cpp index 04e387b82..dec628b84 100644 --- a/ecmascript/builtins/builtins_typedarray.cpp +++ b/ecmascript/builtins/builtins_typedarray.cpp @@ -865,6 +865,14 @@ JSTaggedValue BuiltinsTypedArray::IndexOf(EcmaRuntimeCallInfo *argv) if (!GetThis(argv)->IsTypedArray()) { THROW_TYPE_ERROR_AND_RETURN(argv->GetThread(), "This is not a TypedArray.", JSTaggedValue::Exception()); } + + JSHandle typedArray(GetThis(argv)); + JSTaggedValue srcBuffer = typedArray->GetViewedArrayBufferOrByteArray(); + if (BuiltinsArrayBuffer::IsDetachedBuffer(srcBuffer)) { + THROW_TYPE_ERROR_AND_RETURN(argv->GetThread(), "The ArrayBuffer of typedArray is detached buffer.", + JSTaggedValue::Exception()); + } + return BuiltinsArray::IndexOf(argv); } @@ -992,6 +1000,14 @@ JSTaggedValue BuiltinsTypedArray::LastIndexOf(EcmaRuntimeCallInfo *argv) if (!GetThis(argv)->IsTypedArray()) { THROW_TYPE_ERROR_AND_RETURN(argv->GetThread(), "This is not a TypedArray.", JSTaggedValue::Exception()); } + + JSHandle typedArray(GetThis(argv)); + JSTaggedValue srcBuffer = typedArray->GetViewedArrayBufferOrByteArray(); + if (BuiltinsArrayBuffer::IsDetachedBuffer(srcBuffer)) { + THROW_TYPE_ERROR_AND_RETURN(argv->GetThread(), "The ArrayBuffer of typedArray is detached buffer.", + JSTaggedValue::Exception()); + } + return BuiltinsArray::LastIndexOf(argv); } -- Gitee