ccmake: Fix search with '/'
Commit7a18dd8e
(Add searching of variables, 2003-03-07) added method cmCursesMainForm::JumpToCacheEntry to search for cache entries whose names match a given search string. The method also had a useless argument "int idx" probably left from earlier development iterations and hard-coded in all calls to the value '-1'. The method compared this argument to the "NumberOfVisibleEntries" member which at the time was of type "int" also. Commitff1f8d0b
(Fix or cast more integer conversions in cmake, 2010-06-29) changed the type of "NumberOfVisibleEntries" to size_t to fix other integer conversion warnings. An unsigned type makes sense given the purpose of the member. However, this caused the '-1' signed value to be converted to a large unsigned value in the above-mentioned comparison, leading to incorrect behavior. Fix the problem by removing the useless argument and the comparison.
This commit is contained in:
parent
fec71d8016
commit
5d7c3c0a59
|
@ -902,7 +902,7 @@ void cmCursesMainForm::HandleInput()
|
|||
this->SearchMode = false;
|
||||
if ( this->SearchString.size() > 0 )
|
||||
{
|
||||
this->JumpToCacheEntry(-1, this->SearchString.c_str());
|
||||
this->JumpToCacheEntry(this->SearchString.c_str());
|
||||
this->OldSearchString = this->SearchString;
|
||||
}
|
||||
this->SearchString = "";
|
||||
|
@ -1076,7 +1076,7 @@ void cmCursesMainForm::HandleInput()
|
|||
{
|
||||
if ( this->OldSearchString.size() > 0 )
|
||||
{
|
||||
this->JumpToCacheEntry(-1, this->OldSearchString.c_str());
|
||||
this->JumpToCacheEntry(this->OldSearchString.c_str());
|
||||
}
|
||||
}
|
||||
// switch advanced on/off
|
||||
|
@ -1191,7 +1191,7 @@ int cmCursesMainForm::LoadCache(const char *)
|
|||
return r;
|
||||
}
|
||||
|
||||
void cmCursesMainForm::JumpToCacheEntry(int idx, const char* astr)
|
||||
void cmCursesMainForm::JumpToCacheEntry(const char* astr)
|
||||
{
|
||||
std::string str;
|
||||
if ( astr )
|
||||
|
@ -1199,18 +1199,14 @@ void cmCursesMainForm::JumpToCacheEntry(int idx, const char* astr)
|
|||
str = cmSystemTools::LowerCase(astr);
|
||||
}
|
||||
|
||||
if ( size_t(idx) > this->NumberOfVisibleEntries )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if ( idx < 0 && str.size() == 0)
|
||||
if(str.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
FIELD* cur = current_field(this->Form);
|
||||
int start_index = field_index(cur);
|
||||
int findex = start_index;
|
||||
while ( (findex / 3) != idx )
|
||||
for(;;)
|
||||
{
|
||||
if ( str.size() > 0 )
|
||||
{
|
||||
|
|
|
@ -122,9 +122,8 @@ protected:
|
|||
// Remove an entry from the interface and the cache.
|
||||
void RemoveEntry(const char* value);
|
||||
|
||||
// Jump to the cache value with index idx. If string str is
|
||||
// specified, it will stop on widget that contain that string.
|
||||
void JumpToCacheEntry(int idx, const char* str);
|
||||
// Jump to the cache entry whose name matches the string.
|
||||
void JumpToCacheEntry(const char* str);
|
||||
|
||||
// Copies of cache entries stored in the user interface
|
||||
std::vector<cmCursesCacheEntryComposite*>* Entries;
|
||||
|
|
Loading…
Reference in New Issue