From 9b6340bdc55cdbe65eefc5ca129ba2cdd6c4f466 Mon Sep 17 00:00:00 2001 From: wangrx Date: Mon, 25 Mar 2024 17:33:10 +0800 Subject: [PATCH] fix ecmascript/builtins/builtins_regexp.cpp --- ecmascript/builtins/builtins_regexp.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ecmascript/builtins/builtins_regexp.cpp b/ecmascript/builtins/builtins_regexp.cpp index 6c0e99f6f9..e78e970dd7 100644 --- a/ecmascript/builtins/builtins_regexp.cpp +++ b/ecmascript/builtins/builtins_regexp.cpp @@ -175,6 +175,19 @@ JSTaggedValue BuiltinsRegExp::Exec(EcmaRuntimeCallInfo *argv) // 6. Return RegExpBuiltinExec(R, S). JSTaggedValue result = RegExpBuiltinExec(thread, thisObj, string, useCache); + + JSHandle regexpObj(thisObj); + JSMutableHandle flags(thread, regexpObj->GetOriginalFlags()); + std::string source = EcmaStringAccessor(regexpObj->GetOriginalSource()).ToStdString(); + uint8_t flagsBits = static_cast(flags->GetInt()); + bool unicode = (flagsBits & RegExpParser::FLAG_UTF16) != 0; + if (unicode && (source == "()")) { + const GlobalEnvConstants *globalConst = thread->GlobalConstants(); + JSHandle lastIndexHandle = globalConst->GetHandledLastIndexString(); + ObjectFastOperator::FastSetPropertyByValue(thread, thisObj.GetTaggedValue(), lastIndexHandle.GetTaggedValue(), + JSTaggedValue(0)); + RETURN_EXCEPTION_IF_ABRUPT_COMPLETION(thread); + } return JSTaggedValue(result); } -- Gitee