Просмотр исходного кода

Merge topic 'ccmake-fix-infinite-loop-search' into release-3.23

432a8ab739 ccmake: Fix infinite loop during invalid search

Acked-by: Kitware Robot <[email protected]>
Merge-request: !7269
Brad King 3 лет назад
Родитель
Сommit
640268c19b
2 измененных файлов с 8 добавлено и 7 удалено
  1. 7 7
      Source/CursesDialog/cmCursesMainForm.cxx
  2. 1 0
      Source/CursesDialog/cmCursesMainForm.h

+ 7 - 7
Source/CursesDialog/cmCursesMainForm.cxx

@@ -95,9 +95,10 @@ void cmCursesMainForm::InitializeUI()
 
 
   // Add a label to display when cache is empty
   // Add a label to display when cache is empty
   // dummy entry widget (does not respond to input)
   // 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) {
   if (count > 0) {
     // Create the composites.
     // Create the composites.
@@ -192,10 +193,9 @@ void cmCursesMainForm::RePost()
   // if no cache entries there should still be one dummy field
   // if no cache entries there should still be one dummy field
   this->IsEmpty = this->Fields.empty();
   this->IsEmpty = this->Fields.empty();
   if (this->IsEmpty) {
   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;
     this->NumberOfVisibleEntries = 1;
   }
   }
   // Has to be null terminated.
   // Has to be null terminated.

+ 1 - 0
Source/CursesDialog/cmCursesMainForm.h

@@ -162,6 +162,7 @@ protected:
   // Number of pages displayed
   // Number of pages displayed
   int NumberOfPages = 0;
   int NumberOfPages = 0;
   bool IsEmpty = false;
   bool IsEmpty = false;
+  std::unique_ptr<cmCursesCacheEntryComposite> EmptyCacheEntry;
 
 
   int InitialWidth;
   int InitialWidth;
   std::unique_ptr<cmake> CMakeInstance;
   std::unique_ptr<cmake> CMakeInstance;