Fix use of uninitialized variables in GetWordAtPosition when the position is not in a word
Originally committed to SVN as r6271.
This commit is contained in:
parent
1293f86afe
commit
3f8b9b8213
2 changed files with 11 additions and 9 deletions
|
@ -86,26 +86,28 @@ void ScintillaTextCtrl::SetUnicodeStyling(int start,int length,int style) {
|
||||||
|
|
||||||
/// @brief Get boundaries of word at position
|
/// @brief Get boundaries of word at position
|
||||||
void ScintillaTextCtrl::GetBoundsOfWordAtPosition(int pos,int &start,int &end) {
|
void ScintillaTextCtrl::GetBoundsOfWordAtPosition(int pos,int &start,int &end) {
|
||||||
// Results
|
|
||||||
IntPairVector results;
|
IntPairVector results;
|
||||||
GetWordBoundaries(GetText(), results);
|
GetWordBoundaries(GetText(), results);
|
||||||
|
|
||||||
// Get boundaries
|
// Get boundaries
|
||||||
int count = results.size();
|
for (size_t i = 0; i < results.size(); i++) {
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
if (results[i].first <= pos && results[i].second >= pos) {
|
if (results[i].first <= pos && results[i].second >= pos) {
|
||||||
start = results[i].first;
|
start = results[i].first;
|
||||||
end = results[i].second - 1;
|
end = results[i].second;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Word not found
|
||||||
|
start = 0;
|
||||||
|
end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Get word at specified position
|
/// @brief Get word at specified position
|
||||||
wxString ScintillaTextCtrl::GetWordAtPosition(int pos) {
|
wxString ScintillaTextCtrl::GetWordAtPosition(int pos) {
|
||||||
int start,end;
|
int start,end;
|
||||||
GetBoundsOfWordAtPosition(pos,start,end);
|
GetBoundsOfWordAtPosition(pos, start, end);
|
||||||
return GetText().Mid(start, end - start + 1);
|
return GetText().Mid(start, end - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Set selection, unicode-aware
|
/// @brief Set selection, unicode-aware
|
||||||
|
|
|
@ -869,11 +869,11 @@ void SubsTextEditCtrl::OnUseSuggestion(wxCommandEvent &event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get boundaries of text being replaced
|
// Get boundaries of text being replaced
|
||||||
int start,end;
|
int start, end;
|
||||||
GetBoundsOfWordAtPosition(currentWordPos,start,end);
|
GetBoundsOfWordAtPosition(currentWordPos, start, end);
|
||||||
|
|
||||||
wxString text = GetText();
|
wxString text = GetText();
|
||||||
SetText(text.Left(std::max(0,start)) + suggestion + text.Mid(end+1));
|
SetText(text.Left(std::max(0, start)) + suggestion + text.Mid(end));
|
||||||
|
|
||||||
// Set selection
|
// Set selection
|
||||||
SetSelectionU(start,start+suggestion.Length());
|
SetSelectionU(start,start+suggestion.Length());
|
||||||
|
|
Loading…
Reference in a new issue