diff --git a/widget/ContentCache.cpp b/widget/ContentCache.cpp index 73698ca19594..fe4023c4b1a1 100644 --- a/widget/ContentCache.cpp +++ b/widget/ContentCache.cpp @@ -1311,10 +1311,9 @@ ContentCache::TextRectArray::GetUnionRectAsFarAsPossible( uint32_t aLength, bool aRoundToExistingOffset) const { - MOZ_ASSERT(HasRects()); - LayoutDeviceIntRect rect; - if (!aRoundToExistingOffset && !IsOverlappingWith(aOffset, aLength)) { + if (!HasRects() || + (!aRoundToExistingOffset && !IsOverlappingWith(aOffset, aLength))) { return rect; } uint32_t startOffset = std::max(aOffset, mStart); @@ -1325,6 +1324,9 @@ ContentCache::TextRectArray::GetUnionRectAsFarAsPossible( if (aRoundToExistingOffset && endOffset < mStart + 1) { endOffset = mStart + 1; } + if (NS_WARN_IF(endOffset < startOffset)) { + return rect; + } for (uint32_t i = 0; i < endOffset - startOffset; i++) { rect = rect.Union(mRects[startOffset - mStart + i]); }