summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPale Moon <git-repo@palemoon.org>2018-03-15 14:37:26 +0100
committerPale Moon <git-repo@palemoon.org>2018-03-19 12:21:40 +0100
commit8f1b656dbe4d6ffcfef04ec351be1482ef70ce1b (patch)
tree053a417d03f4505e2c79a77b0499d29fa0ac171f
parent816408b63d35101bac88d3d5dcff381b95a72b14 (diff)
downloadpalemoon-8f1b656dbe4d6ffcfef04ec351be1482ef70ce1b.tar.gz
Fix trimmedOffsets arithmetic in GetRenderedText().
-rw-r--r--layout/generic/nsTextFrame.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp
index 4b31b21bf..256e276c6 100644
--- a/layout/generic/nsTextFrame.cpp
+++ b/layout/generic/nsTextFrame.cpp
@@ -8882,9 +8882,13 @@ nsTextFrame::GetRenderedText(uint32_t aStartOffset,
startOffset = aStartOffset;
endOffset = std::min<uint32_t>(INT32_MAX, aEndOffset);
}
+
+ // If startOffset and/or endOffset are inside of trimmedOffsets' range,
+ // then clamp the edges of trimmedOffsets accordingly.
+ int32_t origTrimmedOffsetsEnd = trimmedOffsets.GetEnd();
trimmedOffsets.mStart = std::max<uint32_t>(trimmedOffsets.mStart,
startOffset);
- trimmedOffsets.mLength = std::min<uint32_t>(trimmedOffsets.GetEnd(),
+ trimmedOffsets.mLength = std::min<uint32_t>(origTrimmedOffsetsEnd,
endOffset) - trimmedOffsets.mStart;
if (trimmedOffsets.mLength <= 0) {
offsetInRenderedString = nextOffsetInRenderedString;