From addfe027d3dd6182ad6244a5b3c42647512d71dc Mon Sep 17 00:00:00 2001 From: grasci <86058054+grasci-arm@users.noreply.github.com> Date: Fri, 17 May 2024 17:29:44 +0100 Subject: [PATCH] csolution crashes with config files for generated compoinents (#1521) csolution convert crashes when using attr=config files for generated component and the files is missing in the gpdsc file #1442 Provide nullptr guard over rteFile tests are pending: provided by PR [projmgr] Expose crash when running csolution convert (#1442) Avoid tests crash Co-authored-by: Evgueni Driouk --- libs/rtemodel/src/RteProject.cpp | 5 ++++- libs/rtemodel/test/src/RteModelTest.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/rtemodel/src/RteProject.cpp b/libs/rtemodel/src/RteProject.cpp index 754b8a10b..8bcb3ce14 100644 --- a/libs/rtemodel/src/RteProject.cpp +++ b/libs/rtemodel/src/RteProject.cpp @@ -435,6 +435,9 @@ void RteProject::AddCprjComponents(const Collection& selItems, RteTarg // update file versions for (auto [instanceName, fi] : m_files) { + if(fi->IsRemoved()) { + continue; + } string version; auto rteFile = fi->GetFile(target->GetName()); auto itver = configFileVersions.find(instanceName); // file in cprj can be specified by its instance name @@ -442,7 +445,7 @@ void RteProject::AddCprjComponents(const Collection& selItems, RteTarg itver = configFileVersions.find(fi->GetName()); // or by original name if (itver != configFileVersions.end()) { version = itver->second; - } else { + } else if(rteFile) { // Fall back to the version noted in the pack version = rteFile->GetVersionString(); } diff --git a/libs/rtemodel/test/src/RteModelTest.cpp b/libs/rtemodel/test/src/RteModelTest.cpp index 05b298163..ca3898293 100644 --- a/libs/rtemodel/test/src/RteModelTest.cpp +++ b/libs/rtemodel/test/src/RteModelTest.cpp @@ -90,6 +90,7 @@ TEST(RteModelTest, PackRegistryLoadPacks) { packs1.clear(); EXPECT_TRUE(rteKernel.LoadPacks(files, packs1, &testModel, true)); EXPECT_EQ(packs1.size(), files.size()); + pack1 = *packs1.begin(); EXPECT_EQ(pack1->GetFirstChild("dummy_child"), nullptr); // pack got loaded again => no added child EXPECT_EQ(packRegistry->GetLoadedPacks().size(), files.size());