From 819a49413830c47687c0fdce13472f8d3177a1bb Mon Sep 17 00:00:00 2001 From: Cameron Kaiser Date: Thu, 1 Oct 2020 22:48:46 -0700 Subject: [PATCH] #612: M1224669 --- layout/generic/nsTextFrame.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp index 4e345cb45..867d42a9e 100644 --- a/layout/generic/nsTextFrame.cpp +++ b/layout/generic/nsTextFrame.cpp @@ -7938,7 +7938,9 @@ nsTextFrame::AddInlineMinISizeForFlow(nsRenderingContext *aRenderingContext, if (i > wordStart) { nscoord width = - NSToCoordCeilClamped(textRun->GetAdvanceWidth(wordStart, i - wordStart, &provider)); + NSToCoordCeilClamped(textRun->GetAdvanceWidth(wordStart, i - wordStart, + &provider)); + width = std::max(0, width); aData->currentLine = NSCoordSaturatingAdd(aData->currentLine, width); aData->atStartOfLine = false; @@ -7950,8 +7952,11 @@ nsTextFrame::AddInlineMinISizeForFlow(nsRenderingContext *aRenderingContext, aData->trailingWhitespace += width; } else { // Some non-whitespace so the old trailingWhitespace is no longer trailing - aData->trailingWhitespace = - NSToCoordCeilClamped(textRun->GetAdvanceWidth(trimStart, i - trimStart, &provider)); + nscoord wsWidth = + NSToCoordCeilClamped(textRun->GetAdvanceWidth(trimStart, + i - trimStart, + &provider)); + aData->trailingWhitespace = std::max(0, wsWidth); } } else { aData->trailingWhitespace = 0; @@ -8090,7 +8095,9 @@ nsTextFrame::AddInlinePrefISizeForFlow(nsRenderingContext *aRenderingContext, if (i > lineStart) { nscoord width = - NSToCoordCeilClamped(textRun->GetAdvanceWidth(lineStart, i - lineStart, &provider)); + NSToCoordCeilClamped(textRun->GetAdvanceWidth(lineStart, i - lineStart, + &provider)); + width = std::max(0, width); aData->currentLine = NSCoordSaturatingAdd(aData->currentLine, width); if (collapseWhitespace) { @@ -8101,8 +8108,11 @@ nsTextFrame::AddInlinePrefISizeForFlow(nsRenderingContext *aRenderingContext, aData->trailingWhitespace += width; } else { // Some non-whitespace so the old trailingWhitespace is no longer trailing - aData->trailingWhitespace = - NSToCoordCeilClamped(textRun->GetAdvanceWidth(trimStart, i - trimStart, &provider)); + nscoord wsWidth = + NSToCoordCeilClamped(textRun->GetAdvanceWidth(trimStart, + i - trimStart, + &provider)); + aData->trailingWhitespace = std::max(0, wsWidth); } } else { aData->trailingWhitespace = 0;