Fix the chat bug, save the world~

Also fix badly written parts of LL stuff synced.
This commit is contained in:
Lirusaito
2019-04-19 01:16:27 -04:00
parent f26425f17a
commit 1244d5df03

View File

@@ -4691,10 +4691,10 @@ S32 LLTextEditor::insertStringNoUndo(const S32 pos, const LLWString &wstr)
S32 LLTextEditor::removeStringNoUndo(S32 pos, S32 length) S32 LLTextEditor::removeStringNoUndo(S32 pos, S32 length)
{ {
auto seg_iter = getSegIterContaining(pos); auto seg_iter = getSegIterContaining(pos);
S32 end = pos + length;
while(seg_iter != mSegments.end()) while(seg_iter != mSegments.end())
{ {
LLTextSegmentPtr segmentp = *seg_iter; LLTextSegmentPtr segmentp = *seg_iter;
S32 end = pos + length;
if (segmentp->getStart() < pos) if (segmentp->getStart() < pos)
{ {
// deleting from middle of segment // deleting from middle of segment
@@ -4714,8 +4714,7 @@ S32 LLTextEditor::removeStringNoUndo(S32 pos, S32 length)
if (segmentp->getEnd() <= end) if (segmentp->getEnd() <= end)
{ {
// remove segment // remove segment
auto seg_to_erase(seg_iter++); seg_iter = mSegments.erase(seg_iter);
mSegments.erase(seg_to_erase);
continue; continue;
} }
// deleting head of segment // deleting head of segment
@@ -5026,7 +5025,7 @@ LLTextEditor::segment_list_t::iterator LLTextEditor::getSegIterContaining(S32 in
if (mSegments.size() <= 1) { return mSegments.begin(); } if (mSegments.size() <= 1) { return mSegments.begin(); }
LLPointer<LLTextSegment> index_segment = new LLTextSegment(index); LLPointer<LLTextSegment> 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; return it;
} }
@@ -5040,7 +5039,7 @@ LLTextEditor::segment_list_t::const_iterator LLTextEditor::getSegIterContaining(
if (mSegments.size() <= 1) { return mSegments.begin(); } if (mSegments.size() <= 1) { return mSegments.begin(); }
LLPointer<LLTextSegment> index_segment = new LLTextSegment(index); LLPointer<LLTextSegment> 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; return it;
} }