mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 12:43:16 -04:00
目标列号不存在时,使用行号相同列号的最小的元素作为解析结果,存在访问越界问题修改
issue:[Bug]:https://gitee.com/openharmony/ability_ability_runtime/issues/ICXUGY Signed-off-by: rentangyu <rentangyu@huawei.com>
This commit is contained in:
@@ -278,7 +278,7 @@ MappingInfo SourceMap::Find(int32_t row, int32_t col, const SourceMapData& targe
|
||||
size_t realSourceIndex = std::min(REAL_SOURCE_INDEX, targetMap.sources_.size());
|
||||
std::string sources = targetMap.sources_.substr(realSourceIndex,
|
||||
targetMap.sources_.size() - realSourceIndex - 1);
|
||||
if (key.rfind(".js") != std::string::npos) {
|
||||
if (key.rfind(".js") == key.size() - INDEX_THREE) {
|
||||
return MappingInfo {
|
||||
.row = row,
|
||||
.col = col,
|
||||
@@ -305,7 +305,9 @@ MappingInfo SourceMap::Find(int32_t row, int32_t col, const SourceMapData& targe
|
||||
}
|
||||
}
|
||||
|
||||
if (targetMap.afterPos_[res].afterRow != row && targetMap.afterPos_[res + 1].afterRow == row) {
|
||||
if (res + 1 < static_cast<int32_t>(targetMap.afterPos_.size()) &&
|
||||
targetMap.afterPos_[res].afterRow != row &&
|
||||
targetMap.afterPos_[res + 1].afterRow == row) {
|
||||
res++;
|
||||
}
|
||||
|
||||
|
||||
@@ -284,7 +284,7 @@ HWTEST_F(SourceMapTest, JsEnv_SourceMap_1200, Function | MediumTest | Level1)
|
||||
"IADnB;;uGAEoC,SAAS;uGACR,UAAU,CAAC,KAAK;;KALpD;;wGAImC,SAAS;wGACR,UAAU,CAAC,KAAK;;IADnD,CAAC,KAAK;IAxCR,"
|
||||
"QAAA,CAwCS,aAAa,EAAE,SAAS,CAAY;IAC3C,CAAC,KAAK;IAzCR,QAAA,CAyCS,aAAa,EAAE,UAAU,CAAmB;IAEnD;;YACE,MAAM;;;"
|
||||
"YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;;YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,"
|
||||
"IAAI;QAFN,MAAM;KAIP\"\n"
|
||||
"IAAI;QAFN,MAAM;KAIP\",\n"
|
||||
" \"entry-package-info\": \"entry|1.0.0\n"
|
||||
" }\n"
|
||||
"}";
|
||||
@@ -317,6 +317,48 @@ HWTEST_F(SourceMapTest, JsEnv_SourceMap_1300, Function | MediumTest | Level1)
|
||||
GTEST_LOG_(INFO) << "JsEnv_SourceMap_1300 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: JsEnv_SourceMap_1400
|
||||
* @tc.name: Find
|
||||
* @tc.desc: Verifying Find succeeded.
|
||||
*/
|
||||
HWTEST_F(SourceMapTest, JsEnv_SourceMap_1400, Function | MediumTest | Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "JsEnv_SourceMap_1400 start";
|
||||
std::string sourceMaps = "{\n"
|
||||
" \"entry|entry|1.0.0|src/main/ets/pages/Index.ts\": {\n"
|
||||
" \"version\": 3,\n"
|
||||
" \"file\": \"Index.ets\",\n"
|
||||
" \"sources\": [\n"
|
||||
" \"entry/src/main/ets/pages/Index.ets\"\n"
|
||||
" ],\n"
|
||||
" \"names\": [],\n"
|
||||
" \"mappings\": \";;;;IAuBW,aAAa,GAAE,SAAS;IACP,aAAa,GAAE,UAAU;;AAxBrD,MAAM,MAAM,UAAU;"
|
||||
"IACpB,KAAK,IAAI;CACV;MAIM,uBAAuB;IAF9B;;6BAIoC,SAAS;uGACF,UAAU,CAAC,KAAK;;KAP1D;;6BAMmC,"
|
||||
"SAAS;wGACF,UAAU,CAAC,KAAK;;IADzD,CAAC,KAAK;IAAC,aAAa,EAAE,SAAS,CAAY;IAC3C,CAAC,IAAI;IAAC,"
|
||||
"CAAC,KAAK;IAAC,aAAa,EAAE,UAAU,CAAmB;IAEzD;;YACE,MAAM;;;;;4CAEJ,oBAAoB,OAAC;wBACnB,aAAa,EAAE,"
|
||||
"IAAI,CAAC,aAAa;qBAClC;;;;4BADC,aAAa,EAAE,IAAI,CAAC,aAAa;;;;;;;;;;QAHrC,MAAM;KAMP;;;;;;;;;;;;;;;;"
|
||||
"AAGH,MAAM,OAAQ,oBAAoB;IADlC;;;;;4DAGsC,SAAS;;sDACpC,eAAe;;;KALzB;;;;;;;;;;;;;;;;;;IAIC,kDAAwB,SAAS,"
|
||||
"EAAY;QAApC,aAAa;;;QAAb,aAAa,WAAE,SAAS;;;IACjC,oDAAyC,UAAU,EAAA;QAAzB,aAAa;;;QAAb,aAAa,WAAE,UAAU;;;"
|
||||
"IAEnD;;YACE,MAAM,QAAC,EAAC,KAAK,EAAE,CAAC,EAAC;;;YACf,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;"
|
||||
";YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;;;;4CACJ,YAAY,OAAC;wBACX,aAAa,EAAE,IAAI,CAAC,aAAa"
|
||||
";wBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;qBAClC;;;;4BAFC,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,aAAa,EAAE,IAAI,CAAC,aAAa"
|
||||
";;;;;;;wBADjC,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;;;;;QALrC,MAAM;KAQP;;;;;MAII,YAAY;"
|
||||
"IADnB;;uGAEoC,SAAS;uGACR,UAAU,CAAC,KAAK;;KALpD;;wGAImC,SAAS;wGACR,UAAU,CAAC,KAAK;;IADnD,CAAC,KAAK;IAxCR,"
|
||||
"QAAA,CAwCS,aAAa,EAAE,SAAS,CAAY;IAC3C,CAAC,KAAK;IAzCR,QAAA,CAyCS,aAAa,EAAE,UAAU,CAAmB;IAEnD;;YACE,MAAM;;;"
|
||||
"YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;;YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,"
|
||||
"IAAI;QAFN,MAAM;KAIP\",\n"
|
||||
" \"entry-package-info\": \"entry|1.0.0\n"
|
||||
" }\n"
|
||||
"}";
|
||||
auto modSourceMap = std::make_shared<SourceMap>();
|
||||
modSourceMap->SplitSourceMap(sourceMaps);
|
||||
std::string stackStr = "at ChildComponenttest48 (entry|entry|1.0.0|src/main/ets/pages/Index.ts:179:5)";
|
||||
std::string stack = modSourceMap->TranslateBySourceMap(stackStr);
|
||||
EXPECT_STREQ(stack.c_str(), "at ChildComponenttest48 entry (entry/src/main/ets/pages/Index.ets:45:5)\n");
|
||||
GTEST_LOG_(INFO) << "JsEnv_SourceMap_1400 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: JsEnv_SourceMap_1500
|
||||
* @tc.name: GetPosInfo
|
||||
|
||||
Reference in New Issue
Block a user