Changeset 44640 in webkit


Ignore:
Timestamp:
Jun 12, 2009 5:11:38 PM (15 years ago)
Author:
Simon Fraser
Message:

2009-06-12 Simon Fraser <Simon Fraser>

Reviewed by Dan Bernstein

https://bugs.webkit.org/show_bug.cgi?id=26095

Fix crash when a renderer for an anonymous node is composited
by null-checking renderer()->node().

Test: compositing/generated-content.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::createGraphicsLayer): (WebCore::RenderLayerBacking::rendererHasBackground): (WebCore::RenderLayerBacking::rendererBackgroundColor): (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer): (WebCore::RenderLayerBacking::paintIntoLayer):
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r44632 r44640  
     12009-06-12  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Reviewed by Dan Bernstein
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=26095
     6       
     7        Testcase for creating accelerated compositing layers for anonymous content.
     8       
     9        * compositing/generated-content.html: Added.
     10        * platform/mac/compositing/generated-content-expected.txt: Added.
     11
    1122009-06-12  Gustavo Noronha Silva  <gns@gnome.org>
    213
  • trunk/WebCore/ChangeLog

    r44639 r44640  
    77        * platform/image-decoders/skia/ImageDecoder.h:
    88        (WebCore::RGBA32Buffer::copyRowNTimes): Fix typo that broke Skia GIF decoding.
     9
     102009-06-12  Simon Fraser  <simon.fraser@apple.com>
     11
     12        Reviewed by Dan Bernstein
     13
     14        https://bugs.webkit.org/show_bug.cgi?id=26095
     15       
     16        Fix crash when a renderer for an anonymous node is composited
     17        by null-checking renderer()->node().
     18       
     19        Test: compositing/generated-content.html
     20
     21        * rendering/RenderLayerBacking.cpp:
     22        (WebCore::RenderLayerBacking::createGraphicsLayer):
     23        (WebCore::RenderLayerBacking::rendererHasBackground):
     24        (WebCore::RenderLayerBacking::rendererBackgroundColor):
     25        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer):
     26        (WebCore::RenderLayerBacking::paintIntoLayer):
    927
    10282009-06-12  Simon Fraser  <simon.fraser@apple.com>
  • trunk/WebCore/rendering/RenderLayerBacking.cpp

    r42271 r44640  
    7676   
    7777#ifndef NDEBUG
    78     if (renderer()->node()->isDocumentNode())
    79         m_graphicsLayer->setName("Document Node");
    80     else {
    81         if (renderer()->node()->isHTMLElement() && renderer()->node()->hasID())
    82             m_graphicsLayer->setName(renderer()->renderName() + String(" ") + static_cast<HTMLElement*>(renderer()->node())->id());
    83         else
    84             m_graphicsLayer->setName(renderer()->renderName());
    85     }
     78    if (renderer()->node()) {
     79        if (renderer()->node()->isDocumentNode())
     80            m_graphicsLayer->setName("Document Node");
     81        else {
     82            if (renderer()->node()->isHTMLElement() && renderer()->node()->hasID())
     83                m_graphicsLayer->setName(renderer()->renderName() + String(" ") + static_cast<HTMLElement*>(renderer()->node())->id());
     84            else
     85                m_graphicsLayer->setName(renderer()->renderName());
     86        }
     87    } else
     88        m_graphicsLayer->setName("Anonymous Node");
    8689#endif  // NDEBUG
    8790
     
    411414{
    412415    // FIXME: share more code here
    413     if (renderer()->node()->isDocumentNode()) {
     416    if (renderer()->node() && renderer()->node()->isDocumentNode()) {
    414417        RenderObject* htmlObject = renderer()->firstChild();
    415418        if (!htmlObject)
     
    434437{
    435438    // FIXME: share more code here
    436     if (renderer()->node()->isDocumentNode()) {
     439    if (renderer()->node() && renderer()->node()->isDocumentNode()) {
    437440        RenderObject* htmlObject = renderer()->firstChild();
    438441        RenderStyle* style = htmlObject->style();
     
    470473        return true;
    471474   
    472     if (renderObject->node()->isDocumentNode()) {
     475    if (renderObject->node() && renderObject->node()->isDocumentNode()) {
    473476        // Look to see if the root object has a non-simple backgound
    474477        RenderObject* rootObject = renderObject->document()->documentElement()->renderer();
     
    754757       
    755758        // FIXME: do we need this code?
    756         if (renderer()->node()->isDocumentNode() && renderer()->document()->isHTMLDocument()) {
     759        if (renderer()->node() && renderer()->node()->isDocumentNode() && renderer()->document()->isHTMLDocument()) {
    757760            RenderBox* box = toRenderBox(renderer());
    758761            int w = box->width();
Note: See TracChangeset for help on using the changeset viewer.