Changeset 191403 in webkit


Ignore:
Timestamp:
Oct 21, 2015 2:45:26 PM (9 years ago)
Author:
dino@apple.com
Message:

Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html
https://bugs.webkit.org/show_bug.cgi?id=150212
<rdar://problem/23137376>

Reviewed by Brent Fulgham.

Source/WebCore:

Handle the case where a filter element doesn't have a renderer. Inspired by the Blink
commit:
https://chromium.googlesource.com/chromium/src.git/+/fb79f7fc46552d45127acd2959a23662ad8f271e

Test: svg/filters/display-none-filter-primitive.html

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives):

  • svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::SVGFilterBuilder::appendEffectToEffectReferences):

LayoutTests:

  • svg/filters/display-none-filter-primitive-expected.txt: Added.
  • svg/filters/display-none-filter-primitive.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r191400 r191403  
     12015-10-21  Dean Jackson  <dino@apple.com>
     2
     3        Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html
     4        https://bugs.webkit.org/show_bug.cgi?id=150212
     5        <rdar://problem/23137376>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        * svg/filters/display-none-filter-primitive-expected.txt: Added.
     10        * svg/filters/display-none-filter-primitive.html: Added.
     11
    1122015-10-21  Brady Eidson  <beidson@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r191400 r191403  
     12015-10-21  Dean Jackson  <dino@apple.com>
     2
     3        Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html
     4        https://bugs.webkit.org/show_bug.cgi?id=150212
     5        <rdar://problem/23137376>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        Handle the case where a filter element doesn't have a renderer. Inspired by the Blink
     10        commit:
     11        https://chromium.googlesource.com/chromium/src.git/+/fb79f7fc46552d45127acd2959a23662ad8f271e
     12
     13        Test: svg/filters/display-none-filter-primitive.html
     14
     15        * rendering/svg/RenderSVGResourceFilter.cpp:
     16        (WebCore::RenderSVGResourceFilter::buildPrimitives):
     17        * svg/graphics/filters/SVGFilterBuilder.cpp:
     18        (WebCore::SVGFilterBuilder::appendEffectToEffectReferences):
     19
    1202015-10-21  Brady Eidson  <beidson@apple.com>
    221
  • trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp

    r191049 r191403  
    9191        element.setStandardAttributes(effect.get());
    9292        effect->setEffectBoundaries(SVGLengthContext::resolveRectangle<SVGFilterPrimitiveStandardAttributes>(&element, filterElement().primitiveUnits(), targetBoundingBox));
    93         effect->setOperatingColorSpace(element.renderer()->style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
     93        if (element.renderer())
     94            effect->setOperatingColorSpace(element.renderer()->style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
    9495        builder->add(element.result(), WTF::move(effect));
    9596    }
  • trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp

    r189565 r191403  
    6767    // The effect must be a newly created filter effect.
    6868    ASSERT(!m_effectReferences.contains(effect));
    69     ASSERT(object && !m_effectRenderer.contains(object));
     69    ASSERT(!object || !m_effectRenderer.contains(object));
    7070    m_effectReferences.add(effect, FilterEffectSet());
    7171
     
    7575    for (unsigned i = 0; i < numberOfInputEffects; ++i)
    7676        effectReferences(effect->inputEffect(i)).add(effect.get());
    77     m_effectRenderer.add(object, effect.get());
     77
     78    // If object is null, that means the element isn't attached for some
     79    // reason, which in turn mean that certain types of invalidation will not
     80    // work (the LayoutObject -> FilterEffect mapping will not be defined).
     81    if (object)
     82        m_effectRenderer.add(object, effect.get());
    7883}
    7984
Note: See TracChangeset for help on using the changeset viewer.