Changeset 99467 in webkit


Ignore:
Timestamp:
Nov 7, 2011 1:14:53 PM (12 years ago)
Author:
mihnea@adobe.com
Message:

Leaks seen in RenderRegion::setRenderBoxRegionInfo on Leaks bot
https://bugs.webkit.org/show_bug.cgi?id=71259

Reviewed by Darin Adler.

Leak fixes covered by existing tests.

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::logicalWidthChangedInRegions):
The RenderBoxRegionInfo taken out of RenderRegion must be deleted on all code paths.

  • rendering/RenderRegion.cpp:

(WebCore::RenderRegion::removeRenderBoxRegionInfo):
The RenderBoxRegionInfo map owns the values, therefore, when values are removed from map
they must also be deleted.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r99466 r99467  
     12011-11-07  Mihnea Ovidenie  <mihnea@adobe.com>
     2
     3        Leaks seen in RenderRegion::setRenderBoxRegionInfo on Leaks bot
     4        https://bugs.webkit.org/show_bug.cgi?id=71259
     5
     6        Reviewed by Darin Adler.
     7
     8        Leak fixes covered by existing tests.
     9
     10        * rendering/RenderFlowThread.cpp:
     11        (WebCore::RenderFlowThread::logicalWidthChangedInRegions):
     12        The RenderBoxRegionInfo taken out of RenderRegion must be deleted on all code paths.
     13        * rendering/RenderRegion.cpp:
     14        (WebCore::RenderRegion::removeRenderBoxRegionInfo):
     15        The RenderBoxRegionInfo map owns the values, therefore, when values are removed from map
     16        they must also be deleted.
     17
    1182011-11-07  Adam Barth  <abarth@webkit.org>
    219
  • trunk/Source/WebCore/rendering/RenderFlowThread.cpp

    r99384 r99467  
    659659            continue;
    660660
     661        LayoutUnit oldLogicalWidth = oldInfo->logicalWidth();
     662        delete oldInfo;
     663
    661664        RenderBoxRegionInfo* newInfo = block->renderBoxRegionInfo(region, offsetFromLogicalTopOfFirstPage);
    662         if (!newInfo || newInfo->logicalWidth() != oldInfo->logicalWidth()) {
    663             delete oldInfo;
     665        if (!newInfo || newInfo->logicalWidth() != oldLogicalWidth)
    664666            return true;
    665         }
    666        
     667
    667668        if (region == endRegion)
    668669            break;
    669670    }
    670    
     671
    671672    return false;
    672673}
  • trunk/Source/WebCore/rendering/RenderRegion.cpp

    r98600 r99467  
    225225void RenderRegion::removeRenderBoxRegionInfo(const RenderBox* box)
    226226{
    227     m_renderBoxRegionInfo.remove(box);
     227    delete m_renderBoxRegionInfo.take(box);
    228228}
    229229
Note: See TracChangeset for help on using the changeset viewer.