#3922 out_of_range crash in preeditor
parent
a99c1e36de
commit
67921fae6d
|
|
@ -2505,9 +2505,24 @@ void LLLineEditor::resetPreedit()
|
||||||
if (hasPreeditString())
|
if (hasPreeditString())
|
||||||
{
|
{
|
||||||
const S32 preedit_pos = mPreeditPositions.front();
|
const S32 preedit_pos = mPreeditPositions.front();
|
||||||
mText.erase(preedit_pos, mPreeditPositions.back() - preedit_pos);
|
const S32 end = mPreeditPositions.back();
|
||||||
|
const S32 len = end - preedit_pos;
|
||||||
|
const S32 size = mText.length();
|
||||||
|
if (preedit_pos < size
|
||||||
|
&& end <= size
|
||||||
|
&& preedit_pos >= 0
|
||||||
|
&& len > 0)
|
||||||
|
{
|
||||||
|
mText.erase(preedit_pos, len);
|
||||||
mText.insert(preedit_pos, mPreeditOverwrittenWString);
|
mText.insert(preedit_pos, mPreeditOverwrittenWString);
|
||||||
setCursor(preedit_pos);
|
setCursor(preedit_pos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LL_WARNS() << "Index out of bounds. Start: " << preedit_pos
|
||||||
|
<< ", end:" << end
|
||||||
|
<< ", full string length: " << size << LL_ENDL;
|
||||||
|
}
|
||||||
|
|
||||||
mPreeditWString.clear();
|
mPreeditWString.clear();
|
||||||
mPreeditOverwrittenWString.clear();
|
mPreeditOverwrittenWString.clear();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue