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

Changeset 286827 in webkit


Ignore:
Timestamp:
Dec 9, 2021, 7:37:04 PM (5 years ago)
Author:
cathiechen
Message:

Stack-overflow crash in WebCore::RenderBox::computeLogicalHeight()
https://bugs.webkit.org/show_bug.cgi?id=233460

Reviewed by Sergio Villar Senin and Darin Adler.

Source/WebCore:

Like flexibleBox item, deprecatedFlexibleBox item should call clearOverridingContentSize if
it is positioned. Otherwise, RenderReplaced::computeAspectRatioInformationForRenderBox might call
itself recursively.

Test: fast/css/deprecated-flex-box-with-min-content-crashes.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::isDisplayFlexibleOrGridBoxIncludingDeprecated const):
(WebCore::RenderStyle::isDisplayDeprecatedFlexibleBox):

LayoutTests:

  • fast/css/deprecated-flex-box-with-min-content-crashes-expected.txt: Added.
  • fast/css/deprecated-flex-box-with-min-content-crashes.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r286821 r286827  
     12021-12-09  Cathie Chen  <cathiechen@igalia.com>
     2
     3        Stack-overflow crash in WebCore::RenderBox::computeLogicalHeight()
     4        https://bugs.webkit.org/show_bug.cgi?id=233460
     5
     6        Reviewed by Sergio Villar Senin and Darin Adler.
     7
     8        * fast/css/deprecated-flex-box-with-min-content-crashes-expected.txt: Added.
     9        * fast/css/deprecated-flex-box-with-min-content-crashes.html: Added.
     10
    1112021-12-09  Chris Dumez  <cdumez@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r286825 r286827  
     12021-12-09  Cathie Chen  <cathiechen@igalia.com>
     2
     3        Stack-overflow crash in WebCore::RenderBox::computeLogicalHeight()
     4        https://bugs.webkit.org/show_bug.cgi?id=233460
     5
     6        Reviewed by Sergio Villar Senin and Darin Adler.
     7
     8        Like flexibleBox item, deprecatedFlexibleBox item should call clearOverridingContentSize if
     9        it is positioned. Otherwise, RenderReplaced::computeAspectRatioInformationForRenderBox might call
     10        itself recursively.
     11
     12        Test: fast/css/deprecated-flex-box-with-min-content-crashes.html
     13
     14        * rendering/RenderBox.cpp:
     15        (WebCore::RenderBox::styleDidChange):
     16        * rendering/style/RenderStyle.h:
     17        (WebCore::RenderStyle::isDisplayFlexibleOrGridBoxIncludingDeprecated const):
     18        (WebCore::RenderStyle::isDisplayDeprecatedFlexibleBox):
     19
    1202021-12-09  Devin Rousso  <drousso@apple.com>
    221
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r286672 r286827  
    418418    // children of a flex/grid box are out-of-flow, and thus, not flex/grid items. This means that we need to clear
    419419    // any override content size set by our container, because it would likely be incorrect after the style change.
    420     if (isOutOfFlowPositioned() && parent() && parent()->style().isDisplayFlexibleOrGridBox())
     420    if (isOutOfFlowPositioned() && parent() && parent()->style().isDisplayFlexibleBoxIncludingDeprecatedOrGridBox())
    421421        clearOverridingContentSize();
    422422
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r286795 r286827  
    15181518    bool isOriginalDisplayInlineType() const { return isDisplayInlineType(originalDisplay()); }
    15191519    bool isDisplayFlexibleOrGridBox() const { return isDisplayFlexibleOrGridBox(display()); }
     1520    bool isDisplayFlexibleBoxIncludingDeprecatedOrGridBox() const { return isDisplayFlexibleOrGridBox() || isDisplayDeprecatedFlexibleBox(display()); }
    15201521    bool isDisplayRegionType() const;
    15211522    bool isDisplayTableOrTablePart() const { return isDisplayTableOrTablePart(display()); }
     
    20072008    static bool isDisplayGridBox(DisplayType);
    20082009    static bool isDisplayFlexibleOrGridBox(DisplayType);
     2010    static bool isDisplayDeprecatedFlexibleBox(DisplayType);
    20092011    static bool isDisplayListItemType(DisplayType);
    20102012    static bool isDisplayTableOrTablePart(DisplayType);
     
    24252427}
    24262428
     2429inline bool RenderStyle::isDisplayDeprecatedFlexibleBox(DisplayType display)
     2430{
     2431    return display == DisplayType::Box || display == DisplayType::InlineBox;
     2432}
     2433
    24272434inline bool RenderStyle::isDisplayListItemType(DisplayType display)
    24282435{
Note: See TracChangeset for help on using the changeset viewer.