From 1244d5df030faa76807f272dc7408a4018058e6f Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Fri, 19 Apr 2019 01:16:27 -0400 Subject: [PATCH] Fix the chat bug, save the world~ Also fix badly written parts of LL stuff synced. --- indra/llui/lltexteditor.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 73327d2e3..14f451d35 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -4691,10 +4691,10 @@ S32 LLTextEditor::insertStringNoUndo(const S32 pos, const LLWString &wstr) S32 LLTextEditor::removeStringNoUndo(S32 pos, S32 length) { auto seg_iter = getSegIterContaining(pos); + S32 end = pos + length; while(seg_iter != mSegments.end()) { LLTextSegmentPtr segmentp = *seg_iter; - S32 end = pos + length; if (segmentp->getStart() < pos) { // deleting from middle of segment @@ -4714,8 +4714,7 @@ S32 LLTextEditor::removeStringNoUndo(S32 pos, S32 length) if (segmentp->getEnd() <= end) { // remove segment - auto seg_to_erase(seg_iter++); - mSegments.erase(seg_to_erase); + seg_iter = mSegments.erase(seg_iter); continue; } // deleting head of segment @@ -5026,7 +5025,7 @@ LLTextEditor::segment_list_t::iterator LLTextEditor::getSegIterContaining(S32 in if (mSegments.size() <= 1) { return mSegments.begin(); } LLPointer index_segment = new LLTextSegment(index); - auto it = std::upper_bound(mSegments.begin(), mSegments.end(), index_segment); + auto it = std::lower_bound(mSegments.begin(), mSegments.end(), index_segment, LLTextSegment::compare()); return it; } @@ -5040,7 +5039,7 @@ LLTextEditor::segment_list_t::const_iterator LLTextEditor::getSegIterContaining( if (mSegments.size() <= 1) { return mSegments.begin(); } LLPointer index_segment = new LLTextSegment(index); - auto it = std::upper_bound(mSegments.begin(), mSegments.end(), index_segment); + auto it = std::lower_bound(mSegments.begin(), mSegments.end(), index_segment, LLTextSegment::compare()); return it; }