Bug 1362423 - Ensure nsBidiPresUtils::Resolve always clears the NEEDS_BIDI_RESOLUTION flags for the block and continuations, whichever code-path it takes when looking for possible short-circuits. r=dholbert
authorJonathan Kew <jkew@mozilla.com>
Wed, 10 May 2017 11:01:07 +0100
changeset 357364 75a137315cd3af0b75d44ad728eb5d1bfbfc5049
parent 357363 b62ad39ce4a65365cd4a4c9a632cdccdbd290592
child 357365 3bca83e4c7589f60ed53cad5420b018ff5636928
push id90122
push userjkew@mozilla.com
push dateWed, 10 May 2017 10:01:41 +0000
treeherdermozilla-inbound@3bca83e4c758 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdholbert
bugs1362423
milestone55.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1362423 - Ensure nsBidiPresUtils::Resolve always clears the NEEDS_BIDI_RESOLUTION flags for the block and continuations, whichever code-path it takes when looking for possible short-circuits. r=dholbert
layout/base/nsBidiPresUtils.cpp
--- a/layout/base/nsBidiPresUtils.cpp
+++ b/layout/base/nsBidiPresUtils.cpp
@@ -741,16 +741,17 @@ nsBidiPresUtils::Resolve(nsBlockFrame* a
     }
   }
 
   for (nsBlockFrame* block = aBlockFrame; block;
        block = static_cast<nsBlockFrame*>(block->GetNextContinuation())) {
 #ifdef DEBUG
     bpd.mCurrentBlock = block;
 #endif
+    block->RemoveStateBits(NS_BLOCK_NEEDS_BIDI_RESOLUTION);
     nsBlockInFlowLineIterator it(block, block->LinesBegin());
     bpd.mPrevFrame = nullptr;
     TraverseFrames(&it, block->PrincipalChildList().FirstChild(), &bpd);
     nsBlockFrame::FrameLines* overflowLines = block->GetOverflowLines();
     if (overflowLines) {
       nsBlockInFlowLineIterator it(block, overflowLines->mLines.begin(), true);
       bpd.mPrevFrame = nullptr;
       TraverseFrames(&it, overflowLines->mFrames.FirstChild(), &bpd);