⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 287771 in webkit


Ignore:
Timestamp:
Jan 7, 2022, 11:34:59 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

nullptr deref in ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=234018

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2022-01-07
Reviewed by Darin Adler.

In RenderBlockFlow::subtreeContainsFloat and RenderBlockFlow::subtreeContainsFloats we now will
use a non-recursive iterator and return true when we find something, or then return false at the
end of the function.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::subtreeContainsFloat const):
(WebCore::RenderBlockFlow::subtreeContainsFloats const):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r287770 r287771  
     12022-01-07  Gabriel Nava Marino  <gnavamarino@apple.com>
     2
     3        nullptr deref in ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded
     4        https://bugs.webkit.org/show_bug.cgi?id=234018
     5
     6        Reviewed by Darin Adler.
     7
     8        In RenderBlockFlow::subtreeContainsFloat and RenderBlockFlow::subtreeContainsFloats we now will
     9        use a non-recursive iterator and return true when we find something, or then return false at the
     10        end of the function.
     11
     12        * rendering/RenderBlockFlow.cpp:
     13        (WebCore::RenderBlockFlow::subtreeContainsFloat const):
     14        (WebCore::RenderBlockFlow::subtreeContainsFloats const):
     15
    1162022-01-07  Alex Christensen  <achristensen@webkit.org>
    217
  • trunk/Source/WebCore/rendering/RenderBlockFlow.cpp

    r287520 r287771  
    19521952bool RenderBlockFlow::subtreeContainsFloat(RenderBox& renderer) const
    19531953{
    1954     bool contains = m_floatingObjects && m_floatingObjects->set().contains<FloatingObjectHashTranslator>(renderer);
    1955     for (auto& block : childrenOfType<RenderBlock>(*this)) {
     1954    if (containsFloat(renderer))
     1955        return true;
     1956
     1957    for (auto& block : descendantsOfType<RenderBlock>(const_cast<RenderBlockFlow&>(*this))) {
    19561958        if (!is<RenderBlockFlow>(block))
    19571959            continue;
    19581960        auto& blockFlow = downcast<RenderBlockFlow>(block);
    1959         contains |= blockFlow.subtreeContainsFloat(renderer);
    1960     }
    1961     return contains;
     1961        if (blockFlow.containsFloat(renderer))
     1962            return true;
     1963    }
     1964
     1965    return false;
    19621966}
    19631967
    19641968bool RenderBlockFlow::subtreeContainsFloats() const
    19651969{
    1966     bool contains = m_floatingObjects && !m_floatingObjects->set().isEmpty();
    1967     for (auto& block : childrenOfType<RenderBlock>(*this)) {
     1970    if (containsFloats())
     1971        return true;
     1972
     1973    for (auto& block : descendantsOfType<RenderBlock>(const_cast<RenderBlockFlow&>(*this))) {
    19681974        if (!is<RenderBlockFlow>(block))
    19691975            continue;
    19701976        auto& blockFlow = downcast<RenderBlockFlow>(block);
    1971         contains |= blockFlow.subtreeContainsFloats();
    1972     }
    1973     return contains;
     1977        if (blockFlow.containsFloats())
     1978            return true;
     1979    }
     1980
     1981    return false;
    19741982}
    19751983
Note: See TracChangeset for help on using the changeset viewer.