Changeset 252888 in webkit


Ignore:
Timestamp:
Nov 26, 2019 8:44:16 AM (4 years ago)
Author:
Antti Koivisto
Message:

[LFC] Don't leak Boxes
https://bugs.webkit.org/show_bug.cgi?id=204616

Reviewed by Zalan Bujtas.

Store Boxes to LayoutTreeContent instead of leaking them.

This is probably not the final memory management model.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::buildTableStructure):
(WebCore::Layout::TreeBuilder::buildSubTree):

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTreeContent::addBox):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252883 r252888  
     12019-11-26  Antti Koivisto  <antti@apple.com>
     2
     3        [LFC] Don't leak Boxes
     4        https://bugs.webkit.org/show_bug.cgi?id=204616
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Store Boxes to LayoutTreeContent instead of leaking them.
     9       
     10        This is probably not the final memory management model.
     11
     12        * layout/layouttree/LayoutTreeBuilder.cpp:
     13        (WebCore::Layout::TreeBuilder::buildTableStructure):
     14        (WebCore::Layout::TreeBuilder::buildSubTree):
     15        * layout/layouttree/LayoutTreeBuilder.h:
     16        (WebCore::Layout::LayoutTreeContent::addBox):
     17
    1182019-11-26  Manuel Rego Casasnovas  <rego@igalia.com>
    219
  • trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp

    r252816 r252888  
    6767{
    6868}
     69
     70LayoutTreeContent::~LayoutTreeContent() = default;
    6971
    7072static void appendChild(Container& parent, Box& newChild)
     
    264266        auto& captionContainer = downcast<Container>(*captionBox);
    265267        buildSubTree(downcast<RenderElement>(captionRenderer), captionContainer);
    266         // Temporary
    267         captionBox.release();
     268        m_layoutTreeContent.addBox(WTFMove(captionBox));
    268269        tableChild = tableChild->nextSibling();
    269270    }
     
    277278        auto& sectionContainer = downcast<Container>(*sectionBox);
    278279        buildSubTree(downcast<RenderElement>(*sectionRenderer), sectionContainer);
    279         sectionBox.release();
     280        m_layoutTreeContent.addBox(WTFMove(sectionBox));
    280281        sectionRenderer = sectionRenderer->nextSibling();
    281282    }
    282     // Temporary
    283     tableBox.release();
     283    m_layoutTreeContent.addBox(WTFMove(tableBox));
    284284}
    285285
     
    293293        else if (is<Container>(*childLayoutBox))
    294294            buildSubTree(downcast<RenderElement>(childRenderer), downcast<Container>(*childLayoutBox));
    295         // Temporary
    296         childLayoutBox.release();
     295
     296        m_layoutTreeContent.addBox(WTFMove(childLayoutBox));
    297297    }
    298298}
  • trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.h

    r252534 r252888  
    2828#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    2929
     30#include "LayoutBox.h"
    3031#include <wtf/IsoMalloc.h>
    3132#include <wtf/WeakPtr.h>
     
    4849public:
    4950    LayoutTreeContent(const RenderBox&, std::unique_ptr<Container>);
     51    ~LayoutTreeContent();
    5052
    5153    const Container& rootLayoutBox() const { return *m_rootLayoutBox; }
    5254    Container& rootLayoutBox() { return *m_rootLayoutBox; }
    5355    const RenderBox& rootRenderer() const { return m_rootRenderer; }
     56
     57    void addBox(std::unique_ptr<Box> box) { m_boxes.add(WTFMove(box)); }
    5458
    5559    using RenderObjectToLayoutBoxMap = HashMap<const RenderObject*, Box*>;
     
    6064    const RenderBox& m_rootRenderer;
    6165    std::unique_ptr<Container> m_rootLayoutBox;
     66    HashSet<std::unique_ptr<Box>> m_boxes;
    6267    RenderObjectToLayoutBoxMap m_renderObjectToLayoutBox;
    6368};
Note: See TracChangeset for help on using the changeset viewer.