RangeArray::AddRange(): Fix joining with single subsequent range
When joining with a single range, firstRange would be the same as RangeAt(endIndex - 1) and we would overwrite its offset field before getting its end offset, thus possibly resulting in a wrong joined range size.
This commit is contained in:
@@ -142,10 +142,10 @@ RangeArray<Value>::AddRange(const Value& offset, const Value& size)
|
|||||||
|
|
||||||
// Joining is possible. We'll adjust the first affected range and remove the
|
// Joining is possible. We'll adjust the first affected range and remove the
|
||||||
// others (if any).
|
// others (if any).
|
||||||
|
endOffset = std::max(endOffset, RangeAt(endIndex - 1).EndOffset());
|
||||||
RangeType& firstRange = _RangeAt(index);
|
RangeType& firstRange = _RangeAt(index);
|
||||||
firstRange.offset = std::min(firstRange.offset, offset);
|
firstRange.offset = std::min(firstRange.offset, offset);
|
||||||
firstRange.size = std::max(endOffset, RangeAt(endIndex - 1).EndOffset())
|
firstRange.size = endOffset - firstRange.offset;
|
||||||
- firstRange.offset;;
|
|
||||||
|
|
||||||
if (index + 1 < endIndex)
|
if (index + 1 < endIndex)
|
||||||
RemoveRanges(index + 1, endIndex - index - 1);
|
RemoveRanges(index + 1, endIndex - index - 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user