summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-05-18 12:43:24 (GMT)
committerKitware Robot <kwrobot@kitware.com>2022-05-18 12:43:30 (GMT)
commit640268c19b64d3063370872a13d267ef497139ee (patch)
tree20d4f41595d947fa1ebe16b4510e88ac32f5027c
parent44ccfdbe0b3cb9be0278b416febe0b58e4a26e77 (diff)
parent432a8ab7391c0cb3785561097283bba78ca985e5 (diff)
downloadCMake-640268c19b64d3063370872a13d267ef497139ee.zip
CMake-640268c19b64d3063370872a13d267ef497139ee.tar.gz
CMake-640268c19b64d3063370872a13d267ef497139ee.tar.bz2
Merge topic 'ccmake-fix-infinite-loop-search' into release-3.23
432a8ab739 ccmake: Fix infinite loop during invalid search Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7269
-rw-r--r--Source/CursesDialog/cmCursesMainForm.cxx14
-rw-r--r--Source/CursesDialog/cmCursesMainForm.h1
2 files changed, 8 insertions, 7 deletions
diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx
index 3e254e0..8381e86 100644
--- a/Source/CursesDialog/cmCursesMainForm.cxx
+++ b/Source/CursesDialog/cmCursesMainForm.cxx
@@ -95,9 +95,10 @@ void cmCursesMainForm::InitializeUI()
// Add a label to display when cache is empty
// dummy entry widget (does not respond to input)
- cmCursesCacheEntryComposite comp("EMPTY CACHE", 30, 30);
- comp.Entry = cm::make_unique<cmCursesDummyWidget>(1, 1, 1, 1);
- newEntries.emplace_back(std::move(comp));
+ this->EmptyCacheEntry =
+ cm::make_unique<cmCursesCacheEntryComposite>("EMPTY CACHE", 30, 30);
+ this->EmptyCacheEntry->Entry =
+ cm::make_unique<cmCursesDummyWidget>(1, 1, 1, 1);
if (count > 0) {
// Create the composites.
@@ -192,10 +193,9 @@ void cmCursesMainForm::RePost()
// if no cache entries there should still be one dummy field
this->IsEmpty = this->Fields.empty();
if (this->IsEmpty) {
- const auto& front = this->Entries.front();
- this->Fields.push_back(front.Label->Field);
- this->Fields.push_back(front.IsNewLabel->Field);
- this->Fields.push_back(front.Entry->Field);
+ this->Fields.push_back(this->EmptyCacheEntry->Label->Field);
+ this->Fields.push_back(this->EmptyCacheEntry->IsNewLabel->Field);
+ this->Fields.push_back(this->EmptyCacheEntry->Entry->Field);
this->NumberOfVisibleEntries = 1;
}
// Has to be null terminated.
diff --git a/Source/CursesDialog/cmCursesMainForm.h b/Source/CursesDialog/cmCursesMainForm.h
index fb44a45..112b7e8 100644
--- a/Source/CursesDialog/cmCursesMainForm.h
+++ b/Source/CursesDialog/cmCursesMainForm.h
@@ -162,6 +162,7 @@ protected:
// Number of pages displayed
int NumberOfPages = 0;
bool IsEmpty = false;
+ std::unique_ptr<cmCursesCacheEntryComposite> EmptyCacheEntry;
int InitialWidth;
std::unique_ptr<cmake> CMakeInstance;