diff options
author | Pale Moon <git-repo@palemoon.org> | 2018-03-15 14:37:26 +0100 |
---|---|---|
committer | Pale Moon <git-repo@palemoon.org> | 2018-03-19 12:21:40 +0100 |
commit | 8f1b656dbe4d6ffcfef04ec351be1482ef70ce1b (patch) | |
tree | 053a417d03f4505e2c79a77b0499d29fa0ac171f | |
parent | 816408b63d35101bac88d3d5dcff381b95a72b14 (diff) | |
download | palemoon-8f1b656dbe4d6ffcfef04ec351be1482ef70ce1b.tar.gz |
Fix trimmedOffsets arithmetic in GetRenderedText().
-rw-r--r-- | layout/generic/nsTextFrame.cpp | 6 |
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; |