<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>150212</bug_id>
          
          <creation_ts>2015-10-15 17:08:18 -0700</creation_ts>
          <short_desc>Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html</short_desc>
          <delta_ts>2015-10-21 16:15:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Honeycutt">jhoneycutt</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1133697</commentid>
    <comment_count>0</comment_count>
      <attachid>263229</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-10-15 17:08:18 -0700</bug_when>
    <thetext>Created attachment 263229
crashing test

Null dereference loading Blink layout test svg/filters/display-none-filter-primitive.html.

Stack trace:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGABRT)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000040

VM Regions Near 0x40:
--&gt; 
    __TEXT                 0000000102043000-00000001020dd000 [  616K] r-x/rwx SM=COW  /Users/USER/*

Application Specific Information:
CRASHING TEST: blink-tests-that-are-unknown/svg/filters/display-none-filter-primitive.html
================================================================
==23322==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000040 (pc 0x00010779b8cd bp 0x7fff5dbb37f0 sp 0x7fff5dbb37f0 T0)
    #0 0x10779b8cc in WTF::Ref&lt;WebCore::RenderStyle&gt;::get() const Ref.h:120
    #1 0x1095c1625 in WebCore::RenderSVGResourceFilter::buildPrimitives(WebCore::SVGFilter&amp;) const RenderSVGResourceFilter.cpp:93
    #2 0x1095c20a9 in WebCore::RenderSVGResourceFilter::applyResource(WebCore::RenderElement&amp;, WebCore::RenderStyle const&amp;, WebCore::GraphicsContext*&amp;, unsigned short) RenderSVGResourceFilter.cpp:137
    #3 0x1095acb58 in WebCore::SVGRenderingContext::prepareToRenderSVGContent(WebCore::RenderElement&amp;, WebCore::PaintInfo&amp;, WebCore::SVGRenderingContext::NeedsGraphicsContextSave) SVGRenderingContext.cpp:191
    #4 0x1095d223e in WebCore::RenderSVGShape::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderSVGShape.cpp:307
    #5 0x1095cea03 in WebCore::RenderSVGRoot::paintReplaced(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderSVGRoot.cpp:284
    #6 0x1095795ff in WebCore::RenderReplaced::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderReplaced.cpp:189
    #7 0x1093e756a in WebCore::RenderElement::paintAsInlineBlock(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderElement.cpp:1213
    #8 0x1085c024d in WebCore::InlineElementBox::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::LayoutUnit, WebCore::LayoutUnit) InlineElementBox.cpp:91
    #9 0x1085c91b0 in WebCore::InlineFlowBox::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::LayoutUnit, WebCore::LayoutUnit) InlineFlowBox.cpp:1213
    #10 0x10971a8ab in WebCore::RootInlineBox::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::LayoutUnit, WebCore::LayoutUnit) RootInlineBox.cpp:186
    #11 0x1094f51a6 in WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject*, WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) const RenderLineBoxList.cpp:271
    #12 0x1092e8e57 in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1435
    #13 0x1092ea21c in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1584
    #14 0x1092e8b57 in WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1415
    #15 0x1092e95c3 in WebCore::RenderBlock::paintChild(WebCore::RenderBox&amp;, WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::PaintInfo&amp;, bool, WebCore::RenderBlock::PaintBlockType) RenderBlock.cpp:1488
    #16 0x1092e905e in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::PaintInfo&amp;, bool) RenderBlock.cpp:1455
    #17 0x1092e8f4a in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1448
    #18 0x1092ea21c in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1584
    #19 0x1092e8b57 in WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1415
    #20 0x1092e95c3 in WebCore::RenderBlock::paintChild(WebCore::RenderBox&amp;, WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::PaintInfo&amp;, bool, WebCore::RenderBlock::PaintBlockType) RenderBlock.cpp:1488
    #21 0x1092e905e in WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;, WebCore::PaintInfo&amp;, bool) RenderBlock.cpp:1455
    #22 0x1092e8f4a in WebCore::RenderBlock::paintContents(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1448
    #23 0x1092ea21c in WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1584
    #24 0x1092e8b57 in WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) RenderBlock.cpp:1415
    #25 0x10949cba1 in WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase, WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*) RenderLayer.cpp:4738
    #26 0x109498ca7 in WebCore::RenderLayer::paintForegroundForFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, bool, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*, bool) RenderLayer.cpp:4703
    #27 0x10949361f in WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) RenderLayer.cpp:4330
    #28 0x109490d94 in WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) RenderLayer.cpp:3969
    #29 0x10949895f in WebCore::RenderLayer::paintList(WTF::Vector&lt;WebCore::RenderLayer*, 0ul, WTF::CrashOnOverflow, 16ul&gt;*, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) RenderLayer.cpp:4436
    #30 0x1094936df in WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) RenderLayer.cpp:4342
    #31 0x109490d94 in WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) RenderLayer.cpp:3969
    #32 0x1094908fa in WebCore::RenderLayer::paint(WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, WebCore::LayoutSize const&amp;, unsigned int, WebCore::RenderObject*, unsigned int) RenderLayer.cpp:3774
    #33 0x108260bfe in WebCore::FrameView::paintContents(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;) FrameView.cpp:4051
    #34 0x10eb2f675 in -[WebFrame(WebInternal) _drawRect:contentsOnly:] WebFrame.mm:647
    #35 0x10eb8ed7a in -[WebHTMLView drawSingleRect:] WebHTMLView.mm:3502
    #36 0x10eb8f461 in -[WebHTMLView drawRect:] WebHTMLView.mm:3575
    #37 0x7fff8d648bb9 in -[NSView _drawRect:clip:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x1abbb9)
    #38 0x7fff8d6a1378 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204378)
    #39 0x10eb82a44 in -[WebHTMLView(WebPrivate) _recursiveDisplayAllDirtyWithLockFocus:visRect:] WebHTMLView.mm:1467
    #40 0x7fff8d6a1755 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204755)
    #41 0x7fff8d6a1755 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204755)
    #42 0x7fff8d6a1755 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204755)
    #43 0x7fff8d6a1755 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204755)
    #44 0x7fff8d6a1755 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204755)
    #45 0x7fff8d6a1755 in -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x204755)
    #46 0x7fff8d6462e2 in -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x1a92e2)
    #47 0x7fff8d6a0b0b in -[NSNextStepFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x203b0b)
    #48 0x7fff8d643ed2 in -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x1a6ed2)
    #49 0x7fff8d63f2e0 in -[NSView displayIfNeeded] (/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit+0x1a22e0)
    #50 0x1020675d5 in dump() DumpRenderTree.mm:1697
    #51 0x1020a2292 in TestRunner::notifyDone() TestRunnerMac.mm:273
    #52 0x7fff96fa2c83 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x92c83)
    #53 0x7fff96fa2912 in __CFRunLoopDoTimer (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x92912)
    #54 0x7fff96fa2469 in __CFRunLoopDoTimers (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x92469)
    #55 0x7fff96f99960 in __CFRunLoopRun (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x89960)
    #56 0x7fff96f98fc7 in CFRunLoopRunSpecific (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation+0x88fc7)
    #57 0x10206598d in runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) DumpRenderTree.mm:2030
    #58 0x102064f39 in runTestingServerLoop() DumpRenderTree.mm:1180
    #59 0x102064267 in dumpRenderTree(int, char const**) DumpRenderTree.mm:1288
    #60 0x1020662b1 in DumpRenderTreeMain(int, char const**) DumpRenderTree.mm:1418
    #61 0x7fff931e95ac in start (/usr/lib/system/libdyld.dylib+0x35ac)
    #62 0x1  (&lt;unknown module&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133698</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-15 17:08:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/23137376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135363</commentid>
    <comment_count>2</comment_count>
      <attachid>263725</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-10-21 13:38:12 -0700</bug_when>
    <thetext>Created attachment 263725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135399</commentid>
    <comment_count>3</comment_count>
      <attachid>263725</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-10-21 14:41:10 -0700</bug_when>
    <thetext>Comment on attachment 263725
Patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135402</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-10-21 14:46:29 -0700</bug_when>
    <thetext>Committed r191403: &lt;http://trac.webkit.org/changeset/191403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135448</commentid>
    <comment_count>5</comment_count>
      <attachid>263725</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-21 16:13:44 -0700</bug_when>
    <thetext>Comment on attachment 263725
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=263725&amp;action=review

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:94
&gt; +            effect-&gt;setOperatingColorSpace(element.renderer()-&gt;style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);

Why do we have to handle every reference to the renderer and check if it&apos;s null or not? If we have a filter like that &lt;feMerge style=&quot;display: none&quot;&gt;, I think the whole filter has to be ignored as if it did not exist. Why do not we change the loop in RenderSVGResourceFilter::buildPrimitives() to be like this:

    for (auto&amp; element : childrenOfType&lt;SVGFilterPrimitiveStandardAttributes&gt;(filterElement())) {
        RefPtr&lt;FilterEffect&gt; effect = element.build(builder.get(), filter);
        if (!effect) {
            builder-&gt;clearEffects();
            return nullptr;
        }
        if (!element.renderer())
            continue;
        builder-&gt;appendEffectToEffectReferences(effect.copyRef(), element.renderer());
        element.setStandardAttributes(effect.get());
        effect-&gt;setEffectBoundaries(SVGLengthContext::resolveRectangle&lt;SVGFilterPrimitiveStandardAttributes&gt;(&amp;element, filterElement().primitiveUnits(), targetBoundingBox));
        effect-&gt;setOperatingColorSpace(element.renderer()-&gt;style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
        builder-&gt;add(element.result(), WTF::move(effect));
    }

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:69
&gt; +    ASSERT(!object || !m_effectRenderer.contains(object));

This new assertion looks weird to me. Why do we even come to this function if the renderer is null?

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:80
&gt; +    // work (the LayoutObject -&gt; FilterEffect mapping will not be defined).

I think this comment is misleading. Reading &quot;...isn&apos;t attached for some reason&quot; made me think there is a bug somewhere else and we could not figure it out. But only when I looked at the test case in this patch I understood why the renderer was not created. Also I think we should rename object =&gt; renderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135452</commentid>
    <comment_count>6</comment_count>
      <attachid>263725</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-21 16:15:47 -0700</bug_when>
    <thetext>Comment on attachment 263725
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=263725&amp;action=review

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:94
&gt;&gt; +            effect-&gt;setOperatingColorSpace(element.renderer()-&gt;style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
&gt; 
&gt; Why do we have to handle every reference to the renderer and check if it&apos;s null or not? If we have a filter like that &lt;feMerge style=&quot;display: none&quot;&gt;, I think the whole filter has to be ignored as if it did not exist. Why do not we change the loop in RenderSVGResourceFilter::buildPrimitives() to be like this:
&gt; 
&gt;     for (auto&amp; element : childrenOfType&lt;SVGFilterPrimitiveStandardAttributes&gt;(filterElement())) {
&gt;         RefPtr&lt;FilterEffect&gt; effect = element.build(builder.get(), filter);
&gt;         if (!effect) {
&gt;             builder-&gt;clearEffects();
&gt;             return nullptr;
&gt;         }
&gt;         if (!element.renderer())
&gt;             continue;
&gt;         builder-&gt;appendEffectToEffectReferences(effect.copyRef(), element.renderer());
&gt;         element.setStandardAttributes(effect.get());
&gt;         effect-&gt;setEffectBoundaries(SVGLengthContext::resolveRectangle&lt;SVGFilterPrimitiveStandardAttributes&gt;(&amp;element, filterElement().primitiveUnits(), targetBoundingBox));
&gt;         effect-&gt;setOperatingColorSpace(element.renderer()-&gt;style().svgStyle().colorInterpolationFilters() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB);
&gt;         builder-&gt;add(element.result(), WTF::move(effect));
&gt;     }

Sorry I meant:

If we have a filterEffect like that &lt;feMerge style=&quot;display: none&quot;&gt;, I think the whole filterEffect has to be ignored as if it did not exist.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>263229</attachid>
            <date>2015-10-15 17:08:18 -0700</date>
            <delta_ts>2015-10-15 17:08:18 -0700</delta_ts>
            <desc>crashing test</desc>
            <filename>display-none-filter-primitive.html</filename>
            <type>text/html</type>
            <size>416</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcnVuLWFmdGVyLWxh
eW91dC1hbmQtcGFpbnQuanMiPjwvc2NyaXB0Pgo8c3ZnPgogIDxmaWx0ZXIgaWQ9ImYiPgogICAg
PGZlTWVyZ2Ugc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgogICAgICA8ZmVNZXJnZU5vZGUvPgogICAg
PC9mZU1lcmdlPgogICAgPGZlRGlmZnVzZUxpZ2h0aW5nLz4KICA8L2ZpbHRlcj4KICA8cmVjdCBm
aWx0ZXI9InVybCgjZikiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+Cjwvc3ZnPgo8cD5QQVNT
IGlmIG5vIGNyYXNoPC9wPgo8c2NyaXB0PgppZiAod2luZG93LnRlc3RSdW5uZXIpCiAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CnJ1bkFmdGVyTGF5b3V0QW5kUGFpbnQoZnVuY3Rpb24oKSB7fSwg
dHJ1ZSk7Cjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263725</attachid>
            <date>2015-10-21 13:38:12 -0700</date>
            <delta_ts>2015-10-21 14:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150212-20151022073727.patch</filename>
            <type>text/plain</type>
            <size>5693</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcwODMzNWVlZDYwZjhm
ZjAxNzJjMjRkY2RiYjc3MmQ1YmEwODRhMy4uZTBmYTgwMGM5ODY3ZTFhMzg0NjNlMDk4ZTgzMzcy
Nzk0NjkwNDEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEwLTIxICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxsIGRlcmVmZXJlbmNlIGxv
YWRpbmcgQmxpbmsgbGF5b3V0IHRlc3Qgc3ZnL2ZpbHRlcnMvZGlzcGxheS1ub25lLWZpbHRlci1w
cmltaXRpdmUuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwMjEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzEzNzM3Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIGNhc2Ug
d2hlcmUgYSBmaWx0ZXIgZWxlbWVudCBkb2Vzbid0IGhhdmUgYSByZW5kZXJlci4gSW5zcGlyZWQg
YnkgdGhlIEJsaW5rCisgICAgICAgIGNvbW1pdDoKKyAgICAgICAgaHR0cHM6Ly9jaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy5naXQvKy9mYjc5ZjdmYzQ2NTUyZDQ1MTI3YWNk
Mjk1OWEyMzY2MmFkOGYyNzFlCisKKyAgICAgICAgVGVzdDogc3ZnL2ZpbHRlcnMvZGlzcGxheS1u
b25lLWZpbHRlci1wcmltaXRpdmUuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1
aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisKIDIwMTUtMTAtMjEgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGZvciB0
aGUgU1ZHIGBvbmVuZGAgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDBmZDVkNjNlMjRm
MjU3NTNkNmUyYzVlNGI3MzA0ZmMyMjQ5YTFjNjEuLjRmM2JkNzg4MjdjNTYyMGQxNWI3NjI3ZjI2
ZjY1ZWE0YTcwY2YxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC05MCw3ICs5MCw4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVp
bGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0
UmVmZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCBlbGVtZW50LnJlbmRlcmVyKCkpOwogICAgICAg
ICBlbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwogICAgICAgICBl
ZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3Rh
bmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0
ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKLSAgICAg
ICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5
bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDSV9MSU5FQVJS
R0IgPyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IGlmIChlbGVtZW50LnJlbmRlcmVyKCkpCisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGlu
Z0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycygpID09IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJS
R0IgOiBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQu
cmVzdWx0KCksIFdURjo6bW92ZShlZmZlY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuY3BwCmluZGV4IDk2OGZiZjcyNWRmNDY3YzJmNDZkYTI1YzM1MzMxMTIxZGNi
YTA0YWEuLjRmNmE4Mjc3MTRhNmNhZTkwZGYxMmVmYThjMTNlMWE0NTNiZTc2MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5k
RWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYgZWZmCiB7CiAg
ICAgLy8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgZWZmZWN0Lgog
ICAgIEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdCkpOwotICAgIEFT
U0VSVChvYmplY3QgJiYgIW1fZWZmZWN0UmVuZGVyZXIuY29udGFpbnMob2JqZWN0KSk7CisgICAg
QVNTRVJUKCFvYmplY3QgfHwgIW1fZWZmZWN0UmVuZGVyZXIuY29udGFpbnMob2JqZWN0KSk7CiAg
ICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3QsIEZpbHRlckVmZmVjdFNldCgpKTsKIAog
ICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KS5zaXplKCk7CkBAIC03NCw3ICs3NCwxMiBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVu
ZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGVmZgogICAg
IC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBhZGQgdGhlIHNhbWUgdmFsdWUgdG8gYSBzZXQgdHdp
Y2UuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyAr
K2kpCiAgICAgICAgIGVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkuYWRk
KGVmZmVjdC5nZXQoKSk7Ci0gICAgbV9lZmZlY3RSZW5kZXJlci5hZGQob2JqZWN0LCBlZmZlY3Qu
Z2V0KCkpOworCisgICAgLy8gSWYgb2JqZWN0IGlzIG51bGwsIHRoYXQgbWVhbnMgdGhlIGVsZW1l
bnQgaXNuJ3QgYXR0YWNoZWQgZm9yIHNvbWUKKyAgICAvLyByZWFzb24sIHdoaWNoIGluIHR1cm4g
bWVhbiB0aGF0IGNlcnRhaW4gdHlwZXMgb2YgaW52YWxpZGF0aW9uIHdpbGwgbm90CisgICAgLy8g
d29yayAodGhlIExheW91dE9iamVjdCAtPiBGaWx0ZXJFZmZlY3QgbWFwcGluZyB3aWxsIG5vdCBi
ZSBkZWZpbmVkKS4KKyAgICBpZiAob2JqZWN0KQorICAgICAgICBtX2VmZmVjdFJlbmRlcmVyLmFk
ZChvYmplY3QsIGVmZmVjdC5nZXQoKSk7CiB9CiAKIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xl
YXJFZmZlY3RzKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBjNTRhMjEzOTQ3NzFjZTExOGQzN2ZkOWY2MTQ0MDY3MGUyZjQ5
MmVjLi45MGNkOTNkN2U1Njc2YmZhZDI2NjMxNTA3MzRlZWY5YmQ1MTNiN2MyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTUtMTAtMjEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgor
CisgICAgICAgIE51bGwgZGVyZWZlcmVuY2UgbG9hZGluZyBCbGluayBsYXlvdXQgdGVzdCBzdmcv
ZmlsdGVycy9kaXNwbGF5LW5vbmUtZmlsdGVyLXByaW1pdGl2ZS5odG1sCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyMTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIzMTM3Mzc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3ZnL2ZpbHRlcnMvZGlzcGxheS1ub25lLWZpbHRlci1wcmltaXRpdmUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9kaXNwbGF5LW5vbmUt
ZmlsdGVyLXByaW1pdGl2ZS5odG1sOiBBZGRlZC4KKwogMjAxNS0xMC0yMSAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgZm9yIHRoZSBTVkcgYG9u
ZW5kYCBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2Rpc3Bs
YXktbm9uZS1maWx0ZXItcHJpbWl0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9m
aWx0ZXJzL2Rpc3BsYXktbm9uZS1maWx0ZXItcHJpbWl0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZGFkNWVhZjdmMWUzODY4MDQ3ZmEzNjBlNTUwMWE0MjY4ZTE4MDg0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZGlzcGxheS1ub25lLWZpbHRlci1wcmlt
aXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MgaWYgbm8gY3Jhc2gKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2Rpc3BsYXktbm9uZS1maWx0ZXItcHJpbWl0
aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9kaXNwbGF5LW5vbmUtZmlsdGVyLXBy
aW1pdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiY2VjMDg2ZDIyNTBmNjQzMWUyMzI0MWVhNGRhOTY1
OWIwZGNmNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9kaXNw
bGF5LW5vbmUtZmlsdGVyLXByaW1pdGl2ZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHN2Zz4KKyAgPGZpbHRlciBpZD0iZiI+CisgICAgPGZlTWVyZ2Ugc3R5bGU9ImRp
c3BsYXk6IG5vbmUiPgorICAgICAgPGZlTWVyZ2VOb2RlLz4KKyAgICA8L2ZlTWVyZ2U+CisgICAg
PGZlRGlmZnVzZUxpZ2h0aW5nLz4KKyAgPC9maWx0ZXI+CisgIDxyZWN0IGZpbHRlcj0idXJsKCNm
KSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiLz4KKzwvc3ZnPgorPHA+UEFTUyBpZiBubyBjcmFz
aDwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="288841"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>