From 06064b9b4f15ef26d0f5fb32a71e168bb14bc414 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 25 Oct 2013 22:37:58 +0200 Subject: [PATCH] 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. --- headers/private/shared/RangeArray.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/headers/private/shared/RangeArray.h b/headers/private/shared/RangeArray.h index c775d6d46b..72ee3ef5ea 100644 --- a/headers/private/shared/RangeArray.h +++ b/headers/private/shared/RangeArray.h @@ -142,10 +142,10 @@ RangeArray::AddRange(const Value& offset, const Value& size) // Joining is possible. We'll adjust the first affected range and remove the // others (if any). + endOffset = std::max(endOffset, RangeAt(endIndex - 1).EndOffset()); RangeType& firstRange = _RangeAt(index); firstRange.offset = std::min(firstRange.offset, offset); - firstRange.size = std::max(endOffset, RangeAt(endIndex - 1).EndOffset()) - - firstRange.offset;; + firstRange.size = endOffset - firstRange.offset; if (index + 1 < endIndex) RemoveRanges(index + 1, endIndex - index - 1);