<?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>224452</bug_id>
          
          <creation_ts>2021-04-12 14:11:23 -0700</creation_ts>
          <short_desc>Lots of spurious -Wnonnull warnings with GCC 11</short_desc>
          <delta_ts>2021-04-22 10:18:11 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224838</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224826</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zilla</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1749376</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-12 14:11:23 -0700</bug_when>
    <thetext>With GCC 11, we have a warning spam coming from RefPtr.h. Let&apos;s silence it using IGNORE_WARNING_BEGIN/END:

[1019/5391] Building CXX object Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/HashMap.cpp.o
In file included from WTF/Headers/wtf/HashFunctions.h:26,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h:28,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:30:
In static member function ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = TestWebKitAPI::RefLogger]’,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = TestWebKitAPI::RefLogger; _PtrTraits = WTF::RawPtrTraits&lt;TestWebKitAPI::RefLogger&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;TestWebKitAPI::RefLogger&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void TestWebKitAPI::WTF_HashMap_Ref_Value_Test::TestBody()’ at ../../Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:977:36:
WTF/Headers/wtf/RefPtr.h:42:23: warning: ‘this’ pointer is null [-Wnonnull]
   42 |             ptr-&gt;deref();
      |             ~~~~~~~~~~^~
In file included from ../../Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:32:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h: In member function ‘virtual void TestWebKitAPI::WTF_HashMap_Ref_Value_Test::TestBody()’:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h:35:10: note: in a call to non-static member function ‘void TestWebKitAPI::RefLogger::deref()’
   35 |     void deref();
      |          ^~~~~

This is surely a GCC bug -- it&apos;s a static class function, so there is no &apos;this&apos; pointer -- and I intend to report it to the GCC developers. But in the meantime, it would be nice to work around this in WebKit because the warning spam makes it hard to notice other warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749390</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-12 14:38:06 -0700</bug_when>
    <thetext>Well, actually I see the warning is for RefLogger::deref, so &apos;this&apos; is a RefLogger. But it&apos;s still clearly impossible for it to be nonnull since we check for nullptr one line up. The warning actually goes away if we remove the LIKELY().

GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=1948775</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749394</commentid>
    <comment_count>2</comment_count>
      <attachid>425793</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-12 14:46:21 -0700</bug_when>
    <thetext>Created attachment 425793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749398</commentid>
    <comment_count>3</comment_count>
      <attachid>425793</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-12 14:49:41 -0700</bug_when>
    <thetext>Comment on attachment 425793
Patch

Removing r? until I&apos;ve fully worked through all the new -Wnonnull warnings. Might turn out to be more practical to just disable it globally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750322</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-14 13:51:40 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #1)
&gt; GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=1948775

Upstream: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751198</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-16 12:47:13 -0700</bug_when>
    <thetext>Another case:

[1349/2354] Building CXX object Source/WebCore/CMakeFiles...edSources/unified-sources/UnifiedSource-950a39b6-12.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/dom/StyledElement.h:30,
                 from ../../Source/WebCore/html/HTMLElement.h:26,
                 from ../../Source/WebCore/html/HTMLPictureElement.h:28,
                 from ../../Source/WebCore/html/HTMLPictureElement.cpp:27,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-12.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Element]’ at WTF/Headers/wtf/RefPtr.h:44:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Element; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Element&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Element&gt;]’ at WTF/Headers/wtf/RefPtr.h:76:61,
    inlined from ‘void WebCore::HTMLSelectElement::recalcListItems(bool) const’ at ../../Source/WebCore/html/HTMLSelectElement.cpp:790:84:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751953</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 13:48:11 -0700</bug_when>
    <thetext>So we have a few static_asserts in JSC that intentionally trigger this warning: For example, in WasmAirIRGenerator.cpp:

static_assert(sizeof(decltype(static_cast&lt;Instance*&gt;(nullptr)-&gt;cachedStackLimit())) == sizeof(uint64_t), &quot;&quot;);

I suspect this is technically undefined behavior, but since it&apos;s a static_assert I guess the worst that could reasonably happen here would be a build failure, so that seems OK.

The rest seems like false-positives to me. We have warnings from RefPtr.h, CSSValue.h, StyleRule.h, Node.h, ResourceLoader.cpp, and PluginLoader.cpp. In all of these cases, I am unable to judge whether the warnings are false positives or not. Problem is the warning is trying to tell us that the |this| pointer could be NULL, but that only ever happens if something has gone disastrously wrong somewhere else nonobvious, and GCC does not attempt to tell us where like a proper static analysis tool would. These warnings are, therefore, not actionable or useful. Maybe I&apos;m just bad at programming, but I&apos;m skeptical that a developer of average skill would be able to track down and fix any actual problems as a result of these warnings. So I think GCC 11 is going too far here. My proposal is to silence them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751956</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 13:54:02 -0700</bug_when>
    <thetext>Here&apos;s a representative example:

[841/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-c57e08af-6.cpp.o
In file included from WebCore/DerivedSources/unified-sources/UnifiedSource-c57e08af-6.cpp:3:
../../Source/WebCore/loader/ResourceLoader.cpp: In member function ‘virtual void WebCore::ResourceLoader::didReceiveAuthenticationChallenge(WebCore::ResourceHandle*, const WebCore::AuthenticationChallenge&amp;)’:
../../Source/WebCore/loader/ResourceLoader.cpp:809:81: warning: ‘this’ pointer is null [-Wnonnull]
  809 |     challenge.authenticationClient()-&gt;receivedRequestToContinueWithoutCredential(challenge);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~

There&apos;s no way to know why GCC thinks this is a problem. We have a protectedThis RefPtr here to ensure |this| will always be valid, so it&apos;s very unlikely that there is any bug here, or at least not any that can be discerned from the warning message. But even if not for the protector, we would expect to have a dangling reference to |this| (use-after-free code execution vulnerability) rather than a null |this| (which would immediately crash and would merely be a denial of service). I&apos;m not sure how a null |this| could ever practically happen, at least not without a weak pointer somewhere nulling out the memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751961</commentid>
    <comment_count>8</comment_count>
      <attachid>426474</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:11:09 -0700</bug_when>
    <thetext>Created attachment 426474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751963</commentid>
    <comment_count>9</comment_count>
      <attachid>426474</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:12:12 -0700</bug_when>
    <thetext>Comment on attachment 426474
Patch

This patch is option one: manually suppress all the warnings.

I&apos;m leaning against this option because it&apos;s a large number of cases where our code is not doing anything visibly wrong or suspicious. Instead, I&apos;m tempted to just suppress -Wnonnull project-wide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751965</commentid>
    <comment_count>10</comment_count>
      <attachid>426474</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 14:15:01 -0700</bug_when>
    <thetext>Comment on attachment 426474
Patch

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

&gt; Source/WebCore/loader/ResourceLoader.cpp:810
&gt;      challenge.authenticationClient()-&gt;receivedRequestToContinueWithoutCredential(challenge);

Source/WebCore/platform/network/soup/AuthenticationChallenge.h:    AuthenticationClient* authenticationClient() const { return nullptr; }

Why are we silencing this? Isn&apos;t this a real issue when using Soup? (I haven&apos;t checked the other cases).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751967</commentid>
    <comment_count>11</comment_count>
      <attachid>426475</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:15:42 -0700</bug_when>
    <thetext>Created attachment 426475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751972</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:22:56 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Source/WebCore/platform/network/soup/AuthenticationChallenge.h:   
&gt; AuthenticationClient* authenticationClient() const { return nullptr; }

I guess that&apos;s score one for GCC 11, zero for Michael. So I made the mistake of assuming the &apos;this&apos; pointer referred to the ResourceLoader itself, but in fact it is the AuthenticationClient. This was changed in r273236. It seems Carlos is thinking that function should never be called, but still, it does not look good.

I&apos;m going to squint harder at the other cases to see if I can spot any similar problems. But I doubt the other cases will be so easy....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751973</commentid>
    <comment_count>13</comment_count>
      <attachid>426476</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:23:24 -0700</bug_when>
    <thetext>Created attachment 426476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751978</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:38:42 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12) 
&gt; I&apos;m going to squint harder at the other cases to see if I can spot any
&gt; similar problems. But I doubt the other cases will be so easy....

Yeah, I&apos;m not seeing anything. So I will upload a new patch that does not suppress the warning in ResourceLoader.cpp, but does suppress the other cases. And I&apos;ll revise my opinion on suppressing -Wnonnull project-wide, considering it just caught a bug for us. We&apos;ll just have to be diligent in suppressing any new false-positives quickly to ensure that warning spam doesn&apos;t drown out any real problems, as it did here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751979</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-19 14:38:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/76863576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751981</commentid>
    <comment_count>16</comment_count>
      <attachid>426479</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:40:16 -0700</bug_when>
    <thetext>Created attachment 426479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751983</commentid>
    <comment_count>17</comment_count>
      <attachid>426474</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 14:44:26 -0700</bug_when>
    <thetext>Comment on attachment 426474
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:948
&gt;          static_assert(sizeof(decltype(static_cast&lt;Instance*&gt;(nullptr)-&gt;cachedStackLimit())) == sizeof(uint64_t), &quot;&quot;);

I suspect those types of static assertions can be rewritten like so:
static_assert(sizeof(std::result_of&lt;decltype(&amp;Instance::cachedStackLimit)()&gt;::type) == sizeof(uint64_t), &quot;&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751988</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:51:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; I suspect those types of static assertions can be rewritten like so:
&gt; static_assert(sizeof(std::result_of&lt;decltype(&amp;Instance::cachedStackLimit)()&gt;:
&gt; :type) == sizeof(uint64_t), &quot;&quot;);

OK, I&apos;ll see if this works. I&apos;ll still suppress the other warnings, but instead of claiming the warnings are false-positives, I&apos;ll instead claim that I don&apos;t see any actionable problems.

I&apos;m also going to try posting each instance of these warnings here (other than the static_asserts and the ResourceRequest.cpp one), so others can assess whether there might be real bugs here that I&apos;m missing. I&apos;ll use several separate comments for this, since it&apos;s going to be a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751992</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 14:56:54 -0700</bug_when>
    <thetext>First we have warnings caused by using RefPtr&lt;RefLogger&gt; inside a HashMap. I&apos;m reasonably confident these are false-positives as a GCC developer has reduced it down to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100086.

[96/1655] Building CXX object Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/HashSet.cpp.o
In file included from WTF/Headers/wtf/HashFunctions.h:26,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h:28,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:29:
In static member function ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = TestWebKitAPI::RefLogger]’,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = TestWebKitAPI::RefLogger; _PtrTraits = WTF::RawPtrTraits&lt;TestWebKitAPI::RefLogger&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;TestWebKitAPI::RefLogger&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void TestWebKitAPI::WTF_HashSet_Ref_Test::TestBody()’ at ../../Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:429:38:
WTF/Headers/wtf/RefPtr.h:42:23: warning: ‘this’ pointer is null [-Wnonnull]
   42 |             ptr-&gt;deref();
      |             ~~~~~~~~~~^~
In file included from ../../Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:31:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h: In member function ‘virtual void TestWebKitAPI::WTF_HashSet_Ref_Test::TestBody()’:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h:35:10: note: in a call to non-static member function ‘void TestWebKitAPI::RefLogger::deref()’
   35 |     void deref();
      |          ^~~~~

[120/1653] Building CXX object Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/RobinHoodHashSet.cpp.o
In file included from WTF/Headers/wtf/HashFunctions.h:26,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h:28,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/RobinHoodHashSet.cpp:29:
In static member function ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = TestWebKitAPI::RefLogger]’,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = TestWebKitAPI::RefLogger; _PtrTraits = WTF::RawPtrTraits&lt;TestWebKitAPI::RefLogger&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;TestWebKitAPI::RefLogger&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void TestWebKitAPI::WTF_RobinHoodHashSet_Ref_Test::TestBody()’ at ../../Tools/TestWebKitAPI/Tests/WTF/RobinHoodHashSet.cpp:444:38:
WTF/Headers/wtf/RefPtr.h:42:23: warning: ‘this’ pointer is null [-Wnonnull]
   42 |             ptr-&gt;deref();
      |             ~~~~~~~~~~^~
In file included from ../../Tools/TestWebKitAPI/Tests/WTF/RobinHoodHashSet.cpp:31:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h: In member function ‘virtual void TestWebKitAPI::WTF_RobinHoodHashSet_Ref_Test::TestBody()’:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h:35:10: note: in a call to non-static member function ‘void TestWebKitAPI::RefLogger::deref()’
   35 |     void deref();
      |          ^~~~~

[181/1653] Building CXX object Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/HashMap.cpp.o
In file included from WTF/Headers/wtf/HashFunctions.h:26,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h:28,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:30:
In static member function ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = TestWebKitAPI::RefLogger]’,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = TestWebKitAPI::RefLogger; _PtrTraits = WTF::RawPtrTraits&lt;TestWebKitAPI::RefLogger&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;TestWebKitAPI::RefLogger&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void TestWebKitAPI::WTF_HashMap_Ref_Value_Test::TestBody()’ at ../../Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:977:36:
WTF/Headers/wtf/RefPtr.h:42:23: warning: ‘this’ pointer is null [-Wnonnull]
   42 |             ptr-&gt;deref();
      |             ~~~~~~~~~~^~
In file included from ../../Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:32:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h: In member function ‘virtual void TestWebKitAPI::WTF_HashMap_Ref_Value_Test::TestBody()’:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h:35:10: note: in a call to non-static member function ‘void TestWebKitAPI::RefLogger::deref()’
   35 |     void deref();
      |          ^~~~~

[187/1653] Building CXX object Tools/TestWebKitAPI/CMakeFiles/TestWTF.dir/Tests/WTF/RobinHoodHashMap.cpp.o
In file included from WTF/Headers/wtf/HashFunctions.h:26,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h:28,
                 from ../../Tools/TestWebKitAPI/Tests/WTF/RobinHoodHashMap.cpp:30:
In static member function ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = TestWebKitAPI::RefLogger]’,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = TestWebKitAPI::RefLogger; _PtrTraits = WTF::RawPtrTraits&lt;TestWebKitAPI::RefLogger&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;TestWebKitAPI::RefLogger&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void TestWebKitAPI::WTF_RobinHoodHashMap_Ref_Value_Test::TestBody()’ at ../../Tools/TestWebKitAPI/Tests/WTF/RobinHoodHashMap.cpp:979:36:
WTF/Headers/wtf/RefPtr.h:42:23: warning: ‘this’ pointer is null [-Wnonnull]
   42 |             ptr-&gt;deref();
      |             ~~~~~~~~~~^~
In file included from ../../Tools/TestWebKitAPI/Tests/WTF/RobinHoodHashMap.cpp:32:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h: In member function ‘virtual void TestWebKitAPI::WTF_RobinHoodHashMap_Ref_Value_Test::TestBody()’:
../../Tools/TestWebKitAPI/Tests/WTF/RefLogger.h:35:10: note: in a call to non-static member function ‘void TestWebKitAPI::RefLogger::deref()’
   35 |     void deref();
      |          ^~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751993</commentid>
    <comment_count>20</comment_count>
      <attachid>426479</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-19 14:58:15 -0700</bug_when>
    <thetext>Comment on attachment 426479
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:947
&gt; +IGNORE_WARNINGS_BEGIN(&quot;nonnull&quot;)

We should use IGNORE_NULL_CHECK_WARNINGS_BEGIN/END.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:948
&gt;          static_assert(sizeof(decltype(static_cast&lt;Instance*&gt;(nullptr)-&gt;cachedStackLimit())) == sizeof(uint64_t), &quot;&quot;);

As a follow-up, we should seek a way to do this without involving nullptr. I think there might be a way.

&gt; Source/WTF/wtf/RefPtr.h:44
&gt; +IGNORE_WARNINGS_BEGIN(&quot;nonnull&quot;)
&gt;          if (LIKELY(ptr != nullptr))
&gt;              ptr-&gt;deref();
&gt; +IGNORE_WARNINGS_END

This needs a comment. It’s not at all clear why there is a null warning here and why it should be ignored.

&gt; Source/WebCore/css/CSSValue.h:75
&gt; +IGNORE_WARNINGS_BEGIN(&quot;nonnull&quot;)
&gt;              destroy();
&gt; +IGNORE_WARNINGS_END

This needs a comment. It’s not at all clear why there is a null warning here and why it should be ignored.

&gt; Source/WebCore/css/StyleRule.h:282
&gt; +IGNORE_WARNINGS_BEGIN(&quot;nonnull&quot;)
&gt;      if (derefBase())
&gt;          const_cast&lt;StyleRuleBase&amp;&gt;(*this).destroy();
&gt; +IGNORE_WARNINGS_END

This needs a comment. It’s not at all clear why there is a null warning here and why it should be ignored.

&gt; Source/WebCore/dom/Node.h:799
&gt; +IGNORE_WARNINGS_BEGIN(&quot;nonnull&quot;)
&gt;          const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
&gt; +IGNORE_WARNINGS_END

This needs a comment. It’s not at all clear why there is a null warning here and why it should be ignored.

&gt; Source/WebKit/WebProcess/Plugins/PluginView.cpp:155
&gt; +IGNORE_WARNINGS_BEGIN(&quot;nonnull&quot;)
&gt;  PluginView::Stream::~Stream()
&gt;  {
&gt;      if (m_loadCallback)
&gt;          m_loadCallback({ });
&gt;      ASSERT(!m_pluginView);
&gt;  }
&gt; +IGNORE_WARNINGS_END

This needs a comment. It’s not at all clear why there is a null warning here and why it should be ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751997</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 15:03:39 -0700</bug_when>
    <thetext>Huge spam from Node.h:797

[749/1653] Building CXX object Source/WebCore/CMakeFiles/...edSources/unified-sources/UnifiedSource-2f84417a-14.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/css/StyleProperties.cpp:37,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-2f84417a-14.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::StyleSheetContents::_ZN7WebCore18StyleSheetContents11checkLoadedEv.part.0()’ at ../../Source/WebCore/css/StyleSheetContents.cpp:377:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::StyleSheetContents::_ZN7WebCore18StyleSheetContents11checkLoadedEv.part.0()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[761/1653] Building CXX object Source/WebCore/CMakeFiles/...edSources/unified-sources/UnifiedSource-be65d27a-10.cpp.o
In file included from ../../Source/WebCore/dom/FocusEvent.cpp:29,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-10.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Element]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Element; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Element&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Element&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::FullscreenManager::adjustFullscreenElementOnNodeRemoval(WebCore::Node&amp;, WebCore::Document::NodeRemoval)’ at ../../Source/WebCore/dom/FullscreenManager.cpp:595:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::FullscreenManager::adjustFullscreenElementOnNodeRemoval(WebCore::Node&amp;, WebCore::Document::NodeRemoval)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[771/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-be65d27a-3.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/dom/ElementTraversal.h:27,
                 from ../../Source/WebCore/dom/ElementIterator.h:28,
                 from ../../Source/WebCore/html/CollectionTraversal.h:29,
                 from ../../Source/WebCore/dom/LiveNodeList.h:27,
                 from ../../Source/WebCore/html/HTMLCollection.h:27,
                 from ../../Source/WebCore/html/CachedHTMLCollection.h:28,
                 from ../../Source/WebCore/dom/ClassCollection.h:32,
                 from ../../Source/WebCore/dom/ClassCollection.cpp:31,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-3.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘void WebCore::ContainerNode::_ZN7WebCore13ContainerNode14removeChildrenEv.part.0()’ at ../../Source/WebCore/dom/ContainerNode.cpp:717:41:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::ContainerNode::_ZN7WebCore13ContainerNode14removeChildrenEv.part.0()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘void WebCore::ContainerNode::_ZN7WebCore13ContainerNode14removeChildrenEv.part.0()’ at ../../Source/WebCore/dom/ContainerNode.cpp:717:41:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::ContainerNode::_ZN7WebCore13ContainerNode14removeChildrenEv.part.0()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::removeSelfOrChildNodesForInsertion(WebCore::Node&amp;, WebCore::NodeVector&amp;)’ at ../../Source/WebCore/dom/ContainerNode.cpp:262:115:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::removeSelfOrChildNodesForInsertion(WebCore::Node&amp;, WebCore::NodeVector&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::removeSelfOrChildNodesForInsertion(WebCore::Node&amp;, WebCore::NodeVector&amp;)’ at ../../Source/WebCore/dom/ContainerNode.cpp:262:115:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::removeSelfOrChildNodesForInsertion(WebCore::Node&amp;, WebCore::NodeVector&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::replaceChildren(WTF::Vector&lt;WTF::Variant&lt;WTF::RefPtr&lt;WebCore::Node, WTF::RawPtrTraits&lt;WebCore::Node&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt; &gt;, WTF::String&gt; &gt;&amp;&amp;)’ at ../../Source/WebCore/dom/ContainerNode.cpp:1020:41:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::replaceChildren(WTF::Vector&lt;WTF::Variant&lt;WTF::RefPtr&lt;WebCore::Node, WTF::RawPtrTraits&lt;WebCore::Node&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt; &gt;, WTF::String&gt; &gt;&amp;&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::replaceChildren(WTF::Vector&lt;WTF::Variant&lt;WTF::RefPtr&lt;WebCore::Node, WTF::RawPtrTraits&lt;WebCore::Node&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt; &gt;, WTF::String&gt; &gt;&amp;&amp;)’ at ../../Source/WebCore/dom/ContainerNode.cpp:1020:41:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘WebCore::ExceptionOr&lt;void&gt; WebCore::ContainerNode::replaceChildren(WTF::Vector&lt;WTF::Variant&lt;WTF::RefPtr&lt;WebCore::Node, WTF::RawPtrTraits&lt;WebCore::Node&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt; &gt;, WTF::String&gt; &gt;&amp;&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘void WebCore::ContainerNode::replaceAllChildrenWithNewText(const WTF::String&amp;)’ at ../../Source/WebCore/dom/ContainerNode.cpp:690:41:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::ContainerNode::replaceAllChildrenWithNewText(const WTF::String&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Node]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Node; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Node&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Node&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WebCore::NodeVector WebCore::ContainerNode::removeAllChildrenWithScriptAssertion(WebCore::ContainerNode::ChildChange::Source, WebCore::ContainerNode::DeferChildrenChanged)’ at WTF/Headers/wtf/RefPtr.h:73:19,
    inlined from ‘void WebCore::ContainerNode::replaceAllChildrenWithNewText(const WTF::String&amp;)’ at ../../Source/WebCore/dom/ContainerNode.cpp:690:41:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::ContainerNode::replaceAllChildrenWithNewText(const WTF::String&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[778/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-f34946be-1.cpp.o
In file included from ../../Source/WebCore/dom/BoundaryPoint.h:28,
                 from ../../Source/WebCore/dom/SimpleRange.h:28,
                 from ../../Source/WebCore/dom/DocumentMarker.h:24,
                 from ../../Source/WebCore/editing/AlternativeTextController.h:29,
                 from ../../Source/WebCore/editing/AlternativeTextController.cpp:28,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f34946be-1.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::ContainerNode]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::ContainerNode; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::ContainerNode&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::ContainerNode&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::CompositeEditCommand::insertNodeAfter(WTF::Ref&lt;WebCore::Node, WTF::RawPtrTraits&lt;WebCore::Node&gt; &gt;&amp;&amp;, WebCore::Node&amp;)’ at ../../Source/WebCore/editing/CompositeEditCommand.cpp:566:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::CompositeEditCommand::insertNodeAfter(WTF::Ref&lt;WebCore::Node, WTF::RawPtrTraits&lt;WebCore::Node&gt; &gt;&amp;&amp;, WebCore::Node&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::ContainerNode]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::ContainerNode; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::ContainerNode&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::ContainerNode&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::ApplyStyleCommand::applyBlockStyle(WebCore::EditingStyle&amp;)’ at ../../Source/WebCore/editing/ApplyStyleCommand.cpp:247:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::ApplyStyleCommand::applyBlockStyle(WebCore::EditingStyle&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[782/1653] Building CXX object Source/WebCore/CMakeFiles/...edSources/unified-sources/UnifiedSource-be65d27a-18.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/css/SelectorChecker.h:31,
                 from ../../Source/WebCore/cssjit/SelectorCompiler.h:31,
                 from ../../Source/WebCore/dom/SelectorQuery.h:31,
                 from ../../Source/WebCore/dom/SelectorQuery.cpp:28,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-18.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::HTMLSlotElement]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::HTMLSlotElement; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::HTMLSlotElement&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::HTMLSlotElement&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::SlotAssignment::didChangeSlot(const WTF::AtomString&amp;, WebCore::ShadowRoot&amp;)’ at ../../Source/WebCore/dom/SlotAssignment.cpp:317:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::SlotAssignment::didChangeSlot(const WTF::AtomString&amp;, WebCore::ShadowRoot&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[787/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-f34946be-7.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/CharacterData.h:25,
                 from ../../Source/WebCore/dom/Position.h:28,
                 from ../../Source/WebCore/editing/VisiblePosition.h:29,
                 from ../../Source/WebCore/editing/VisibleSelection.h:29,
                 from ../../Source/WebCore/editing/EditCommand.h:30,
                 from ../../Source/WebCore/editing/SplitTextNodeCommand.h:28,
                 from ../../Source/WebCore/editing/SplitTextNodeCommand.cpp:27,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f34946be-7.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Document]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Document; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Document&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Document&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::TextManipulationController::startObservingParagraphs(WebCore::TextManipulationController::ManipulationItemCallback&amp;&amp;, WTF::Vector&lt;WebCore::TextManipulationController::ExclusionRule&gt;&amp;&amp;)’ at ../../Source/WebCore/editing/TextManipulationController.cpp:128:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::TextManipulationController::startObservingParagraphs(WebCore::TextManipulationController::ManipulationItemCallback&amp;&amp;, WTF::Vector&lt;WebCore::TextManipulationController::ExclusionRule&gt;&amp;&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[791/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-950a39b6-2.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/dom/StyledElement.h:30,
                 from ../../Source/WebCore/html/HTMLElement.h:26,
                 from ../../Source/WebCore/html/HTMLCanvasElement.h:33,
                 from ../../Source/WebCore/css/CSSCanvasValue.h:30,
                 from ../../Source/WebCore/html/CanvasBase.cpp:29,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-2.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::HTMLElement]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::HTMLElement; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::HTMLElement&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::HTMLElement&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::ColorInputType::updateColorSwatch()’ at ../../Source/WebCore/html/ColorInputType.cpp:240:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::ColorInputType::updateColorSwatch()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[793/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-f34946be-3.cpp.o
In file included from ../../Source/WebCore/dom/BoundaryPoint.h:28,
                 from ../../Source/WebCore/dom/SimpleRange.h:28,
                 from ../../Source/WebCore/dom/DocumentMarker.h:24,
                 from ../../Source/WebCore/editing/Editor.h:29,
                 from ../../Source/WebCore/editing/Editor.cpp:28,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f34946be-3.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Element]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Element; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Element&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Element&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::Editor::replaceSelectionWithFragment(WebCore::DocumentFragment&amp;, WebCore::Editor::SelectReplacement, WebCore::Editor::SmartReplace, WebCore::Editor::MatchStyle, WebCore::EditAction, WebCore::MailBlockquoteHandling)’ at ../../Source/WebCore/editing/Editor.cpp:722:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::Editor::replaceSelectionWithFragment(WebCore::DocumentFragment&amp;, WebCore::Editor::SelectReplacement, WebCore::Editor::SmartReplace, WebCore::Editor::MatchStyle, WebCore::EditAction, WebCore::MailBlockquoteHandling)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[815/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-950a39b6-7.cpp.o
In file included from ../../Source/WebCore/html/FormAssociatedElement.h:27,
                 from ../../Source/WebCore/html/HTMLFormControlElement.h:27,
                 from ../../Source/WebCore/html/HTMLFieldSetElement.h:26,
                 from ../../Source/WebCore/html/HTMLFieldSetElement.cpp:26,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-7.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::HTMLLegendElement]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::HTMLLegendElement; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::HTMLLegendElement&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::HTMLLegendElement&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void WebCore::HTMLFieldSetElement::childrenChanged(const WebCore::ContainerNode::ChildChange&amp;)’ at ../../Source/WebCore/html/HTMLFieldSetElement.cpp:122:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘virtual void WebCore::HTMLFieldSetElement::childrenChanged(const WebCore::ContainerNode::ChildChange&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[820/1653] Building CXX object Source/WebCore/CMakeFiles/...edSources/unified-sources/UnifiedSource-950a39b6-17.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/dom/StyledElement.h:30,
                 from ../../Source/WebCore/html/HTMLElement.h:26,
                 from ../../Source/WebCore/html/LabelableElement.h:33,
                 from ../../Source/WebCore/html/LabelableElement.cpp:26,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-17.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::HTMLElement]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::HTMLElement; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::HTMLElement&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::HTMLElement&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::MediaDocument::replaceMediaElementTimerFired()’ at ../../Source/WebCore/html/MediaDocument.cpp:227:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::MediaDocument::replaceMediaElementTimerFired()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::HTMLVideoElement]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::HTMLVideoElement; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void WebCore::MediaDocument::defaultEventHandler(WebCore::Event&amp;)’ at ../../Source/WebCore/html/MediaDocument.cpp:206:13,
    inlined from ‘virtual void WebCore::MediaDocument::defaultEventHandler(WebCore::Event&amp;)’ at ../../Source/WebCore/html/MediaDocument.cpp:176:6:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘virtual void WebCore::MediaDocument::defaultEventHandler(WebCore::Event&amp;)’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[822/1653] Building CXX object Source/WebCore/CMakeFiles/...edSources/unified-sources/UnifiedSource-950a39b6-12.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/dom/StyledElement.h:30,
                 from ../../Source/WebCore/html/HTMLElement.h:26,
                 from ../../Source/WebCore/html/HTMLPictureElement.h:28,
                 from ../../Source/WebCore/html/HTMLPictureElement.cpp:27,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-12.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Element]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Element; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Element&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Element&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::HTMLSelectElement::recalcListItems(bool) const’ at ../../Source/WebCore/html/HTMLSelectElement.cpp:790:84:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::HTMLSelectElement::recalcListItems(bool) const’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~
[904/1653] Building CXX object Source/WebCore/CMakeFiles/...vedSources/unified-sources/UnifiedSource-767013ce-3.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/page/Frame.h:32,
                 from ../../Source/WebCore/page/DebugPageOverlays.h:29,
                 from ../../Source/WebCore/page/DebugPageOverlays.cpp:27,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-3.cpp:2:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Document]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Document; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Document&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Document&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::EventHandler::sendScrollEvent()’ at ../../Source/WebCore/page/EventHandler.cpp:4263:9:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::EventHandler::sendScrollEvent()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[1013/1653] Building CXX object Source/WebCore/CMakeFiles...vedSources/unified-sources/UnifiedSource-8feba646-3.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/dom/Element.h:28,
                 from ../../Source/WebCore/dom/StyledElement.h:30,
                 from ../../Source/WebCore/svg/SVGElement.h:30,
                 from ../../Source/WebCore/svg/SVGGraphicsElement.h:24,
                 from ../../Source/WebCore/svg/SVGDefsElement.h:24,
                 from ../../Source/WebCore/svg/SVGDefsElement.cpp:23,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-8feba646-3.cpp:1:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Element]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Element; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Element&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Element&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::SVGElement::buildPendingResourcesIfNeeded()’ at WTF/Headers/wtf/RefPtr.h:73:19:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::SVGElement::buildPendingResourcesIfNeeded()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[1022/1653] Building CXX object Source/WebCore/CMakeFiles...edSources/unified-sources/UnifiedSource-8feba646-17.cpp.o
In file included from ../../Source/WebCore/dom/ContainerNode.h:27,
                 from ../../Source/WebCore/dom/Document.h:33,
                 from ../../Source/WebCore/svg/animation/SMILTimeContainer.cpp:29,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-8feba646-17.cpp:2:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Element]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Element; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Element&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Element&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebCore::SVGSMILElement::connectConditions()’ at ../../Source/WebCore/svg/animation/SVGSMILElement.cpp:556:17:
../../Source/WebCore/dom/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../../Source/WebCore/dom/Node.h: In member function ‘void WebCore::SVGSMILElement::connectConditions()’:
../../Source/WebCore/dom/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~

[1463/1653] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/WebPage/WebPage.cpp.o
In file included from WebCore/PrivateHeaders/WebCore/ContainerNode.h:27,
                 from WebCore/PrivateHeaders/WebCore/CharacterData.h:25,
                 from WebCore/PrivateHeaders/WebCore/Position.h:28,
                 from WebCore/PrivateHeaders/WebCore/TextManipulationController.h:28,
                 from DerivedSources/WebKit/WebPageMessagesReplies.h:44,
                 from ../../Source/WebKit/WebProcess/WebPage/WebPage.h:60,
                 from ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:29:
In member function ‘void WebCore::Node::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::Document]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::Document; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::Document&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::Document&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘void WebKit::WebPage::startTextManipulations(WTF::Vector&lt;WebCore::TextManipulationController::ExclusionRule&gt;&amp;&amp;, WTF::CompletionHandler&lt;void()&gt;&amp;&amp;)’ at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:7144:9:
WebCore/PrivateHeaders/WebCore/Node.h:797:48: warning: ‘this’ pointer is null [-Wnonnull]
  797 |         const_cast&lt;Node&amp;&gt;(*this).removedLastRef();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
WebCore/PrivateHeaders/WebCore/Node.h: In member function ‘void WebKit::WebPage::startTextManipulations(WTF::Vector&lt;WebCore::TextManipulationController::ExclusionRule&gt;&amp;&amp;, WTF::CompletionHandler&lt;void()&gt;&amp;&amp;)’:
WebCore/PrivateHeaders/WebCore/Node.h:691:25: note: in a call to non-static member function ‘void WebCore::Node::removedLastRef()’
  691 |     WEBCORE_EXPORT void removedLastRef();
      |                         ^~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751999</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 15:06:44 -0700</bug_when>
    <thetext>Here&apos;s CSSValue.h:

In file included from ../../Source/WebCore/css/CSSPrimitiveValue.h:26,
                 from ../../Source/WebCore/css/parser/CSSParserToken.h:32,
                 from ../../Source/WebCore/css/parser/CSSParserToken.cpp:31,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-2f84417a-16.cpp:2:
In member function ‘void WebCore::CSSValue::deref()’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebCore::CSSValue]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebCore::CSSValue; _PtrTraits = WTF::RawPtrTraits&lt;WebCore::CSSValue&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebCore::CSSValue&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WTF::RefPtr&lt;WebCore::CSSValue&gt; WebCore::consumeCursor(WebCore::CSSParserTokenRange&amp;, const WebCore::CSSParserContext&amp;, bool)’ at WTF/Headers/wtf/RefPtr.h:73:19:
../../Source/WebCore/css/CSSValue.h:73:20: warning: ‘this’ pointer is null [-Wnonnull]
   73 |             destroy();
      |             ~~~~~~~^~
../../Source/WebCore/css/CSSValue.h: In function ‘WTF::RefPtr&lt;WebCore::CSSValue&gt; WebCore::consumeCursor(WebCore::CSSParserTokenRange&amp;, const WebCore::CSSParserContext&amp;, bool)’:
../../Source/WebCore/css/CSSValue.h:256:25: note: in a call to non-static member function ‘void WebCore::CSSValue::destroy()’
  256 |     WEBCORE_EXPORT void destroy();
      |                         ^~~~~~~

This one is pretty simple. I just don&apos;t see how anything could possibly be wrong here, at least not based on the warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752000</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 15:08:05 -0700</bug_when>
    <thetext>StyleRule.h, similar to CSSValue.h:

In file included from ../../Source/WebCore/style/RuleData.h:25,
                 from ../../Source/WebCore/style/RuleSet.h:25,
                 from ../../Source/WebCore/style/ElementRuleCollector.h:25,
                 from ../../Source/WebCore/style/StyleResolver.h:25,
                 from ../../Source/WebCore/inspector/InspectorOverlay.cpp:69,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-3.cpp:4:
In member function ‘void WebCore::StyleRuleBase::deref() const’,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = const WebCore::StyleRule]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = const WebCore::StyleRule; _PtrTraits = WTF::RawPtrTraits&lt;const WebCore::StyleRule&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;const WebCore::StyleRule&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘WTF::Vector&lt;WTF::String&gt; WebCore::authoredGridTrackSizes(WebCore::Node*, WebCore::GridTrackSizingDirection, unsigned int)’ at ../../Source/WebCore/inspector/InspectorOverlay.cpp:1513:17:
../../Source/WebCore/css/StyleRule.h:280:50: warning: ‘this’ pointer is null [-Wnonnull]
  280 |         const_cast&lt;StyleRuleBase&amp;&gt;(*this).destroy();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from ../../Source/WebCore/style/RuleData.h:25,
                 from ../../Source/WebCore/style/RuleSet.h:25,
                 from ../../Source/WebCore/style/ElementRuleCollector.h:25,
                 from ../../Source/WebCore/style/StyleResolver.h:25,
                 from ../../Source/WebCore/inspector/InspectorOverlay.cpp:69,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-3.cpp:4:
../../Source/WebCore/css/StyleRule.h: In function ‘WTF::Vector&lt;WTF::String&gt; WebCore::authoredGridTrackSizes(WebCore::Node*, WebCore::GridTrackSizingDirection, unsigned int)’:
../../Source/WebCore/css/StyleRule.h:77:25: note: in a call to non-static member function ‘void WebCore::StyleRuleBase::destroy()’
   77 |     WEBCORE_EXPORT void destroy();
      |                         ^~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752004</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 15:13:42 -0700</bug_when>
    <thetext>Last we have PluginView.cpp:

[1464/1653] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/Plugins/PluginView.cpp.o
In destructor ‘virtual WebKit::PluginView::Stream::~Stream()’,
    inlined from ‘void std::default_delete&lt;_Tp&gt;::operator()(_Tp*) const [with _Tp = WebKit::PluginView::Stream]’ at /usr/include/c++/11/bits/unique_ptr.h:85:2,
    inlined from ‘void WTF::RefCounted&lt;T, Deleter&gt;::deref() const [with T = WebKit::PluginView::Stream; Deleter = std::default_delete&lt;WebKit::PluginView::Stream&gt;]’ at WTF/Headers/wtf/RefCounted.h:190:22,
    inlined from ‘void WTF::RefCounted&lt;T, Deleter&gt;::deref() const [with T = WebKit::PluginView::Stream; Deleter = std::default_delete&lt;WebKit::PluginView::Stream&gt;]’ at WTF/Headers/wtf/RefCounted.h:187:10,
    inlined from ‘static void WTF::DefaultRefDerefTraits&lt; &lt;template-parameter-1-1&gt; &gt;::derefIfNotNull(T*) [with T = WebKit::PluginView::Stream]’ at WTF/Headers/wtf/RefPtr.h:42:23,
    inlined from ‘WTF::RefPtr&lt;T, &lt;template-parameter-1-2&gt;, &lt;template-parameter-1-3&gt; &gt;::~RefPtr() [with T = WebKit::PluginView::Stream; _PtrTraits = WTF::RawPtrTraits&lt;WebKit::PluginView::Stream&gt;; _RefDerefTraits = WTF::DefaultRefDerefTraits&lt;WebKit::PluginView::Stream&gt;]’ at WTF/Headers/wtf/RefPtr.h:73:61,
    inlined from ‘virtual void WebKit::PluginView::continueStreamLoad(uint64_t)’ at ../../Source/WebKit/WebProcess/Plugins/PluginView.cpp:1390:9:
../../Source/WebKit/WebProcess/Plugins/PluginView.cpp:153:1: warning: ‘this’ pointer is null [-Wnonnull]
  153 | }
      | ^
../../Source/WebKit/WebProcess/Plugins/PluginView.cpp: In member function ‘virtual void WebKit::PluginView::continueStreamLoad(uint64_t)’:
../../Source/WebKit/WebProcess/Plugins/PluginView.cpp:148:1: note: in a call to non-static member function ‘virtual WebKit::PluginView::Stream::~Stream()’
  148 | PluginView::Stream::~Stream()
      | ^~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752013</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-19 15:33:35 -0700</bug_when>
    <thetext>I’m having a lot of trouble understanding where the null problem is (even if maybe a false positive due to a compiler bug) and why we end up adding the warning suppression so far from the cause, inside functions with wider applicability. Anything we can do to move the ignore macros closer to the cause, and making it clear they are a workaround for a GCC bug or a GCC mystery diagnostic that may be a bug, makes it better.

Also might be nice to use different macros to say &quot;ignore a bogus warning&quot; from &quot;ignore a legitimate warning because we understand the situation&quot; to cut down on the need for comments everywhere making that distinction. I think it’s worth making a custom macro pair if we have a big pattern of incorrect warnings. And if it’s compiler-specific, maybe name the macro with the compiler name.

Not 100% clear on how we have been deciding when to use IGNORE_WARNING and when the compiler-specific versions. Maybe we should not have both any more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752198</commentid>
    <comment_count>26</comment_count>
    <who name="Jonathan Wakely">zilla</who>
    <bug_when>2021-04-20 02:39:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; Comment on attachment 426474 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426474&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:948
&gt; &gt;          static_assert(sizeof(decltype(static_cast&lt;Instance*&gt;(nullptr)-&gt;cachedStackLimit())) == sizeof(uint64_t), &quot;&quot;);
&gt; 
&gt; I suspect those types of static assertions can be rewritten like so:
&gt; static_assert(sizeof(std::result_of&lt;decltype(&amp;Instance::cachedStackLimit)()&gt;:
&gt; :type) == sizeof(uint64_t), &quot;&quot;);

Your result_of syntax is wrong. To invoke a pointer to member you need to provide an object of the class type as the first argument, e.g.

std::result_of&lt;decltype(&amp;Instance::cachedStackLimit)(Instance&amp;)&gt;::type

But this is expensive to compile, and fugly, and std::result_of was deprecated in C++17 and removed from C++20.

You want to ask the compiler a question about calling cachedStackLimit() in an unevaluated context ... that&apos;s exactly what std::declval is for. Then you don&apos;t need to play games with null pointers, and don&apos;t need the compilation overhead and comprehension overhead of std::result_of.

And why sizeof(decltype(...)) instead of just sizeof(...)? Is this an obfuscated code contest?

static_assert(sizeof(std::declval&lt;Instance*&gt;()-&gt;cachedStackLimit()) == sizeof(uint64_t), &quot;&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752260</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 07:58:49 -0700</bug_when>
    <thetext>(In reply to Jonathan Wakely from comment #26)
&gt; static_assert(sizeof(std::declval&lt;Instance*&gt;()-&gt;cachedStackLimit()) ==
&gt; sizeof(uint64_t), &quot;&quot;);

I appreciate the tips. Will try that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752387</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 13:00:17 -0700</bug_when>
    <thetext>(In reply to Jonathan Wakely from comment #26)
&gt; static_assert(sizeof(std::declval&lt;Instance*&gt;()-&gt;cachedStackLimit()) ==
&gt; sizeof(uint64_t), &quot;&quot;);

I&apos;ve split these out to bug #224826.

(In reply to Darin Adler from comment #25)
&gt; I’m having a lot of trouble understanding where the null problem is (even if
&gt; maybe a false positive due to a compiler bug) and why we end up adding the
&gt; warning suppression so far from the cause, inside functions with wider
&gt; applicability. Anything we can do to move the ignore macros closer to the
&gt; cause, and making it clear they are a workaround for a GCC bug or a GCC
&gt; mystery diagnostic that may be a bug, makes it better.

Well I can *try* moving them from headers to source files, but I&apos;m not sure if it will work or not. I suspect they probably need to be used at the point where the compiler emits the warning, not where the human would wish it emitted the warning.

&gt; Also might be nice to use different macros to say &quot;ignore a bogus warning&quot;
&gt; from &quot;ignore a legitimate warning because we understand the situation&quot; to
&gt; cut down on the need for comments everywhere making that distinction. I
&gt; think it’s worth making a custom macro pair if we have a big pattern of
&gt; incorrect warnings. And if it’s compiler-specific, maybe name the macro with
&gt; the compiler name.

How about:

IGNORE_BOGUS_GCC_NULL_CHECK_WARNINGS_BEGIN
IGNORE_BOGUS_GCC_NULL_CHECK_WARNINGS_END

I&apos;ll make it GCC-specific so that we keep the warning enabled when building with clang.

&gt; Not 100% clear on how we have been deciding when to use IGNORE_WARNING and
&gt; when the compiler-specific versions. Maybe we should not have both any more?

If you try to suppress a warning that doesn&apos;t exist, I&apos;m pretty sure GCC is going to warn, which is useful if you accidentally misspell the warning name, for example. So I think IGNORE_CLANG_WARNINGS_BEGIN is really needed. But if Clang is more permissive about that, then perhaps the IGNORE_GCC_WARNINGS_BEGIN variant is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752444</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 15:03:08 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #28)
&gt; Well I can *try* moving them from headers to source files, but I&apos;m not sure
&gt; if it will work or not. I suspect they probably need to be used at the point
&gt; where the compiler emits the warning, not where the human would wish it
&gt; emitted the warning.

I think it’s worth a try but maybe not worth working hard and trying for a very long time.

&gt; &gt; Also might be nice to use different macros to say &quot;ignore a bogus warning&quot;
&gt; &gt; from &quot;ignore a legitimate warning because we understand the situation&quot; to
&gt; &gt; cut down on the need for comments everywhere making that distinction. I
&gt; &gt; think it’s worth making a custom macro pair if we have a big pattern of
&gt; &gt; incorrect warnings. And if it’s compiler-specific, maybe name the macro with
&gt; &gt; the compiler name.
&gt;
&gt; IGNORE_BOGUS_GCC_NULL_CHECK_WARNINGS_BEGIN
&gt; IGNORE_BOGUS_GCC_NULL_CHECK_WARNINGS_END

I think that’s fine; better to make a special macro than to have to scatter comments everywhere to keep saying the same thing. I’m not sure we should literally say &quot;BOGUS&quot;. Maybe &quot;erroneous&quot; is a more factual, less scornful term to use.

&gt; If you try to suppress a warning that doesn&apos;t exist, I&apos;m pretty sure GCC is
&gt; going to warn, which is useful if you accidentally misspell the warning
&gt; name, for example. So I think IGNORE_CLANG_WARNINGS_BEGIN is really needed.
&gt; But if Clang is more permissive about that, then perhaps the
&gt; IGNORE_GCC_WARNINGS_BEGIN variant is not needed.

Yes, that explains it. Didn’t realize GCC was unique in this respect among the three major compilers we support. If so, maybe we should remove IGNORE_GCC_WARNINGS_BEGIN entirely and add it some day only if we have a future need for it. Many of our existing IGNORE_WARNINGS_BEGIN are implicitly GCC or implicitly GCC/clang and for now we don’t need to make this distinction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752447</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 15:15:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #29)
&gt; I think it’s worth a try but maybe not worth working hard and trying for a
&gt; very long time.

Well it was easy to try, because there&apos;s only one other place the macros could possibly go. In the case of the HashMap.cpp:

diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp b/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
index c843e7c55ab1..1eb7b73935d5 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
@@ -973,8 +973,9 @@ TEST(WTF_HashMap, Ref_Value)
 
     {
         HashMap&lt;int, Ref&lt;RefLogger&gt;&gt; map;
-        
+IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN
         auto emptyTake = map.take(1);
+IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_END
         ASSERT_FALSE(static_cast&lt;bool&gt;(emptyTake));
     }
 
This didn&apos;t work unfortunately. The macros really have to go directly in RefPtr.h to avoid the warning.

(In reply to Darin Adler from comment #29)
&gt; Yes, that explains it. Didn’t realize GCC was unique in this respect among
&gt; the three major compilers we support. If so, maybe we should remove
&gt; IGNORE_GCC_WARNINGS_BEGIN entirely and add it some day only if we have a
&gt; future need for it. Many of our existing IGNORE_WARNINGS_BEGIN are
&gt; implicitly GCC or implicitly GCC/clang and for now we don’t need to make
&gt; this distinction.

There is one minor advantage to keeping it that I can think of: it allows us to silence an erroneous warning only for GCC and not for Clang. I&apos;m going to use it to implement IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN. This means Clang can still warn if it detects some actual null dereference problem in this code in the future. That&apos;s hardly essential, though. I&apos;m totally fine with removing IGNORE_GCC_WARNINGS_BEGIN in a separate bug report, if you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752465</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 15:34:12 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; There is one minor advantage to keeping it that I can think of: it allows us
&gt; to silence an erroneous warning only for GCC and not for Clang. I&apos;m going to
&gt; use it to implement IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN. This
&gt; means Clang can still warn if it detects some actual null dereference
&gt; problem in this code in the future.

Sounds smart. Let’s not remove IGNORE_GCC_WARNINGS_BEGIN.

Although you and I, at least, will know that IGNORE_WARNINGS_BEGIN is sometimes used when we mean IGNORE_GCC_WARNINGS_BEGIN because the mistake is usually harmless and undetectable. In cases where we are not working around a bug, I guess it’s all about predicting whether clang will some day add the same warning with the same name and benefit from us already having code to ignore false positives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752480</commentid>
    <comment_count>32</comment_count>
      <attachid>426605</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 15:45:09 -0700</bug_when>
    <thetext>Created attachment 426605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752483</commentid>
    <comment_count>33</comment_count>
      <attachid>426605</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 15:47:52 -0700</bug_when>
    <thetext>Comment on attachment 426605
Patch

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

&gt; Source/WTF/wtf/Compiler.h:507
&gt; +#define IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN IGNORE_GCC_WARNINGS_BEGIN(&quot;nonnull&quot;)
&gt; +#define IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_END IGNORE_GCC_WARNINGS_END

Maybe there should be a comment here pointing at the GCC compiler bug?

&gt; Source/WebCore/dom/Node.h:797
&gt; +// https://bugs.webkit.org/show_bug.cgi?id=224452#c21

Do we really need these comments? Maybe a single comment at the definition of IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN is enough.

&gt; Source/WebKit/WebProcess/Plugins/PluginView.cpp:149
&gt; +// https://bugs.webkit.org/show_bug.cgi?id=224452#c24
&gt; +IGNORE_NULL_CHECK_WARNINGS_BEGIN

Ditto.

Shouldn’t this be using IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN? Or is this different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752485</commentid>
    <comment_count>34</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 15:53:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Source/WebCore/platform/network/soup/AuthenticationChallenge.h:   
&gt; AuthenticationClient* authenticationClient() const { return nullptr; }
&gt; 
&gt; Why are we silencing this? Isn&apos;t this a real issue when using Soup? (I
&gt; haven&apos;t checked the other cases).

Bug #224838</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752487</commentid>
    <comment_count>35</comment_count>
      <attachid>426605</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 15:57:22 -0700</bug_when>
    <thetext>Comment on attachment 426605
Patch

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

&gt;&gt; Source/WTF/wtf/Compiler.h:507
&gt;&gt; +#define IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_END IGNORE_GCC_WARNINGS_END
&gt; 
&gt; Maybe there should be a comment here pointing at the GCC compiler bug?

Sure.

&gt;&gt; Source/WebCore/dom/Node.h:797
&gt;&gt; +// https://bugs.webkit.org/show_bug.cgi?id=224452#c21
&gt; 
&gt; Do we really need these comments? Maybe a single comment at the definition of IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN is enough.

Oops, that&apos;s just an oversight. Seems I failed to review this patch to ensure it actually contains what I thought it did before uploading it. Will remove.

&gt;&gt; Source/WebKit/WebProcess/Plugins/PluginView.cpp:149
&gt;&gt; +IGNORE_NULL_CHECK_WARNINGS_BEGIN
&gt; 
&gt; Ditto.
&gt; 
&gt; Shouldn’t this be using IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN? Or is this different?

Nope, I just missed this file entirely, which is embarrassing. Whoops. Good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752489</commentid>
    <comment_count>36</comment_count>
      <attachid>426607</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 15:59:46 -0700</bug_when>
    <thetext>Created attachment 426607
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752522</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 17:08:22 -0700</bug_when>
    <thetext>Committed r276332 (236812@main): &lt;https://commits.webkit.org/236812@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426607.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752676</commentid>
    <comment_count>38</comment_count>
    <who name="Jonathan Wakely">zilla</who>
    <bug_when>2021-04-21 01:57:48 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; Well it was easy to try, because there&apos;s only one other place the macros
&gt; could possibly go. In the case of the HashMap.cpp:
&gt; 
&gt; diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
&gt; b/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
&gt; index c843e7c55ab1..1eb7b73935d5 100644
&gt; --- a/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
&gt; +++ b/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
&gt; @@ -973,8 +973,9 @@ TEST(WTF_HashMap, Ref_Value)
&gt;  
&gt;      {
&gt;          HashMap&lt;int, Ref&lt;RefLogger&gt;&gt; map;
&gt; -        
&gt; +IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN
&gt;          auto emptyTake = map.take(1);
&gt; +IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_END
&gt;          ASSERT_FALSE(static_cast&lt;bool&gt;(emptyTake));
&gt;      }
&gt;  
&gt; This didn&apos;t work unfortunately. The macros really have to go directly in
&gt; RefPtr.h to avoid the warning.

Last time I lookedinto it, GCC does not support diagnostic pragmas around a single statement. You have to use them outside the function e.g.

IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN
     void foo()
     {
         HashMap&lt;int, Ref&lt;RefLogger&gt;&gt; map;
         auto emptyTake = map.take(1);

         ASSERT_FALSE(static_cast&lt;bool&gt;(emptyTake));
     }
IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_END

I don&apos;t know if Clang has the same limitation.

And that might not make any difference in this case if the pragma has to be around the location that causes the warning, not its caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752677</commentid>
    <comment_count>39</comment_count>
    <who name="Jonathan Wakely">zilla</who>
    <bug_when>2021-04-21 02:01:18 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #29)
&gt; &gt; If you try to suppress a warning that doesn&apos;t exist, I&apos;m pretty sure GCC is
&gt; &gt; going to warn, which is useful if you accidentally misspell the warning
&gt; &gt; name, for example. So I think IGNORE_CLANG_WARNINGS_BEGIN is really needed.
&gt; &gt; But if Clang is more permissive about that, then perhaps the
&gt; &gt; IGNORE_GCC_WARNINGS_BEGIN variant is not needed.
&gt; 
&gt; Yes, that explains it. Didn’t realize GCC was unique in this respect among
&gt; the three major compilers we support. If so, maybe we should remove
&gt; IGNORE_GCC_WARNINGS_BEGIN entirely and add it some day only if we have a
&gt; future need for it. Many of our existing IGNORE_WARNINGS_BEGIN are
&gt; implicitly GCC or implicitly GCC/clang and for now we don’t need to make
&gt; this distinction.

Clang also warns if you try to disable an unsupported warning:

$ clang p.c -Wall
p.c:1:32: warning: unknown warning group &apos;-Wnothing&apos;, ignored [-Wunknown-warning-option]
#pragma GCC diagnostic ignored &quot;-Wnothing&quot;
                               ^


$ gcc  p.c -Wall
p.c:1:32: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas]
    1 | #pragma GCC diagnostic ignored &quot;-Wnothing&quot;
      |                                ^~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752709</commentid>
    <comment_count>40</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-21 05:55:31 -0700</bug_when>
    <thetext>(In reply to Jonathan Wakely from comment #38)
&gt; Last time I lookedinto it, GCC does not support diagnostic pragmas around a
&gt; single statement. You have to use them outside the function e.g.
&gt; 
&gt; IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_BEGIN
&gt;      void foo()
&gt;      {
&gt;          HashMap&lt;int, Ref&lt;RefLogger&gt;&gt; map;
&gt;          auto emptyTake = map.take(1);
&gt; 
&gt;          ASSERT_FALSE(static_cast&lt;bool&gt;(emptyTake));
&gt;      }
&gt; IGNORE_ERRONEOUS_GCC_NULL_CHECK_WARNINGS_END
&gt; 
&gt; I don&apos;t know if Clang has the same limitation.

Well that was true 10 years ago, but not for a long time now. It will work fine around a single statement unless you need to support very old GCC. Fortunately, we don&apos;t.

(The only remaining footgun that I know of is that the pragmas do not work at all when the warning comes from the preprocessor.)

&gt; And that might not make any difference in this case if the pragma has to be
&gt; around the location that causes the warning, not its caller.

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752967</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-21 16:30:14 -0700</bug_when>
    <thetext>Hi Jonathan, and welcome. Are you considering contributing to the WebKit project?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753004</commentid>
    <comment_count>42</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-21 19:08:23 -0700</bug_when>
    <thetext>I think he contributes C++ tips. ;)

Jonathan, I landed your static_assert proposal in r276343.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753097</commentid>
    <comment_count>43</comment_count>
    <who name="Jonathan Wakely">zilla</who>
    <bug_when>2021-04-22 03:01:55 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #42)
&gt; I think he contributes C++ tips. ;)

Yeah, I have too many other things to juggle, sorry! I just found my way here from the Fedora bug for the bogus GCC warning.

&gt; Jonathan, I landed your static_assert proposal in r276343.

I saw, thanks :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753211</commentid>
    <comment_count>44</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-22 10:18:11 -0700</bug_when>
    <thetext>(In reply to Jonathan Wakely from comment #43)
&gt; (In reply to Michael Catanzaro from comment #42)
&gt; &gt; I think he contributes C++ tips. ;)
&gt; 
&gt; Yeah, I have too many other things to juggle, sorry! I just found my way
&gt; here from the Fedora bug for the bogus GCC warning.

No worries, I was just wondering what your plans were.

&gt; &gt; Jonathan, I landed your static_assert proposal in r276343.
&gt; 
&gt; I saw, thanks :-)

Yes, that one was great.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425793</attachid>
            <date>2021-04-12 14:46:21 -0700</date>
            <delta_ts>2021-04-19 14:11:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224452-20210412164620.patch</filename>
            <type>text/plain</type>
            <size>1184</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU3NGY0YzQ4MjkxYTkwYzU0MzQzNjdm
ZWFhMWY0NmQwNzI1MDdlNTkuLjcyMDBkMWYyOGQxYWYwNDY2YzRlYzFhMTliNzRmZmUwNTdhNWFk
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMTIgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmVmUHRyLmg6NDI6MjM6IHdhcm5pbmc6
IOKAmHRoaXPigJkgcG9pbnRlciBpcyBudWxsIFstV25vbm51bGxdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAg
KFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzOjpkZXJlZklmTm90TnVsbCk6CisKIDIwMjEtMDQt
MTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJsb2NrIGxv
YWRpbmcgZm9yIHBvcnQgMTAwODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5o
IGIvU291cmNlL1dURi93dGYvUmVmUHRyLmgKaW5kZXggNzExNTVmYjYzNDA1NTgzNGQ3NzEwYzhm
NGVjMzQ1MTMyYjI4YTliZi4uMDlhODY5ZjU2MjY1M2M3NmQ5ODhhNWQ4NGJkM2ZmOTIxM2I5MzQ0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmVmUHRyLmgKQEAgLTM4LDggKzM4LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBEZWZhdWx0UmVmRGVyZWZUcmFpdHMgewogCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9p
ZCBkZXJlZklmTm90TnVsbChUKiBwdHIpCiAgICAgeworLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1MgorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJub25udWxs
IikKICAgICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCiAgICAgICAgICAgICBwdHIt
PmRlcmVmKCk7CitJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgfQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426474</attachid>
            <date>2021-04-19 14:11:09 -0700</date>
            <delta_ts>2021-04-20 15:45:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224452-20210419161108.patch</filename>
            <type>text/plain</type>
            <size>8932</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTdjMjBhZjA5MzFiYWZkMjY3NmEyMDhlYjM5YjJmYjQ5NGU4NjdjLi5iMGY5ZWNiMmZhNTUyYTg5
Yjc4MzU5MDEyMzk3ODBlYmYyMTVkYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBMb3RzIG9mIHNwdXJpb3VzIC1Xbm9ubnVsbCB3YXJuaW5ncyB3
aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAgKiB3
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkQ3VycmVudE1lbW9yeSk6CisKIDIwMjEtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NjIwZmRjNjViYTdjODlhYjNjODQzNzRkMTU3MjdmNDI5NzJmZjgwNS4uMzNiNzEwMzZiMDJmMWQ1
YzljNzgxZDgzZjRkZTA4OTYyNTcwNDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNC0x
OSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBM
b3RzIG9mIHNwdXJpb3VzIC1Xbm9ubnVsbCB3YXJuaW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDUyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUmVmUHRyLmg6Cisg
ICAgICAgIChXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwpOgorCiAy
MDIxLTA0LTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgdG8gU2V0dGluZ3MgKFBhcnQgMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzN2MzZGMxMjRmODI0M2Y2ZGMzMzJlODZkNDU5ZjQ1MzJiZTFiMTY0Li43OWE1NjlmZjQzNzFj
MjgzNTFhZGI3OTliODA5MjQwYTViMjM5ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjEtMDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisK
KyAgICAgICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVyZWYpOgorICAgICAgICAq
IGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmRlcmVm
IGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
ZGVyZWYgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKwogMjAyMS0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYSBwcmVhbGxv
Y2F0ZSBhdWRpbyBidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjNhYzgxMGIzNTQyZmQzZDVjNWM5Nzk5ODVl
MDMwODMzNjAyZTdiOS4uMzI1NjFkMTUzYjE2ZjNkM2Y1Y2U4ZWU5Yzg3YTlmMDQwNGJjNWU0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNC0xOSAgTWljaGFlbCBDYXRhbnphcm8g
IDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBMb3RzIG9mIHNwdXJpb3VzIC1Xbm9u
bnVsbCB3YXJuaW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisK
IDIwMjEtMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgTGliV2ViUlRDQ29kZWNzUHJveHkgdG8gdXNlIGEgTG9jawpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggZjkwMGU5MGUz
YTUyYTI2YTkxNzgzZGFiYWYxNTU1YjVkYTM0Yjc2YS4uNGU5ZGRiZDBjNzllMTk1MzA4OTE4YThi
NmNmN2NkYzhjZDk1N2JlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC05NDQsNyArOTQ0LDkgQEAgdm9pZCBBaXJJUkdlbmVy
YXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGlt
aXQgcmVzdG8KIAogICAgIGlmIChyZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCA9PSBSZXN0b3JlQ2Fj
aGVkU3RhY2tMaW1pdDo6WWVzKSB7CiAgICAgICAgIC8vIFRoZSBJbnN0YW5jZSBjYWNoZXMgdGhl
IHN0YWNrIGxpbWl0LCBidXQgYWxzbyBrbm93cyB3aGVyZSBpdHMgY2Fub25pY2FsIGxvY2F0aW9u
IGlzLgorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJub25udWxsIikKICAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8SW5zdGFuY2UqPihudWxscHRyKS0+Y2Fj
aGVkU3RhY2tMaW1pdCgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOworSUdOT1JFX1dBUk5J
TkdTX0VORAogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKElu
c3RhbmNlOjpvZmZzZXRPZlBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQoKSwgQjM6OldpZHRoNjQp
KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpLCBCMzo6V2lkdGg2NCkpOwpAQCAtMTI2Myw3ICsx
MjY1LDkgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlw
ZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0
CiB7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PE1lbW9yeSo+KG51bGxwdHIpLT5zaXplKCkpKSA9
PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CitJR05P
UkVfV0FSTklOR1NfRU5ECiAKICAgICBhdXRvIHRlbXAxID0gZzY0KCk7CiAgICAgYXV0byB0ZW1w
MiA9IGc2NCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCmluZGV4IDBiYjc0YzhiZmVhOGUwYzg2MjVlYTRlOGM3YmMyOTZiNjRmZjRjMTIu
LjJhNzYyOTUwOTU2Y2ViZTM5OWE2NmY4ZTkyNTc2MDg3YTliYWE2MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTg3OSw3ICs4
NzksOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUg
ZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
Q3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PE1lbW9yeSo+KG51bGxwdHIpLT5zaXplKCkpKSA9PSBz
aXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CitJR05PUkVf
V0FSTklOR1NfRU5ECiAgICAgVmFsdWUqIG1lbW9yeSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBpbnN0YW5jZVZh
bHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CiAg
ICAgVmFsdWUqIGhhbmRsZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBtZW1vcnksIHNhZmVDYXN0PGludDMyX3Q+
KE1lbW9yeTo6b2Zmc2V0T2ZIYW5kbGUoKSkpOwogICAgIFZhbHVlKiBzaXplID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2lu
KCksIGhhbmRsZSwgc2FmZUNhc3Q8aW50MzJfdD4oTWVtb3J5SGFuZGxlOjpvZmZzZXRPZlNpemUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9SZWZQdHIuaAppbmRleCA3MTE1NWZiNjM0MDU1ODM0ZDc3MTBjOGY0ZWMzNDUxMzJiMjhhOWJm
Li4zNzU0MDJhNmZhMzNkNDAzZGU1ODYyY2U2ZmQzMDQ2MmUyZGQxNGFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAt
MzgsOCArMzgsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRSZWZEZXJl
ZlRyYWl0cyB7CiAKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmSWZOb3ROdWxs
KFQqIHB0cikKICAgICB7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogICAgICAg
ICBpZiAoTElLRUxZKHB0ciAhPSBudWxscHRyKSkKICAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4
IDM5MTY4NmRmZGE5NzIzMWI0MGIxOGUyMjBmNTMzYmNkMDllOWJkNjMuLmFiNjI0OTIxY2NlNTY2
MzRiNDE5ODYyYTU2ZTNiYzI5ZTU3YzgzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC03MCw3
ICs3MCw5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdGhlIGFwcHJvcHJpYXRlIHN1YmNsYXNzIHR5
cGUuCiAgICAgICAgIHVuc2lnbmVkIHRlbXBSZWZDb3VudCA9IG1fcmVmQ291bnQgLSByZWZDb3Vu
dEluY3JlbWVudDsKICAgICAgICAgaWYgKCF0ZW1wUmVmQ291bnQpIHsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigibm9ubnVsbCIpCiAgICAgICAgICAgICBkZXN0cm95KCk7CitJR05PUkVfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9yZWZDb3Vu
dCA9IHRlbXBSZWZDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBlMDJjNTZhMTQ3Yzli
Y2YyOGRjNjQ1NjQzZWFlYmYyMjllMjc3ZWMwLi5hOWNjNjY3MjMyOTU0ZDgwOGVhYjAzMThjODcy
ZjA4N2E5MmUyZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0yNzYsOCArMjc2LDEwIEBA
IGlubGluZSBTdHlsZVJ1bGVCYXNlOjpTdHlsZVJ1bGVCYXNlKGNvbnN0IFN0eWxlUnVsZUJhc2Um
IG8pCiAKIGlubGluZSB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlcmVmKCkgY29uc3QKIHsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIpCiAgICAgaWYgKGRlcmVmQmFzZSgpKQogICAgICAg
ICBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcykuZGVzdHJveSgpOworSUdOT1JFX1dB
Uk5JTkdTX0VORAogfQogCiBpbmxpbmUgdm9pZCBTdHlsZVJ1bGU6OndyYXBwZXJBZG9wdFNlbGVj
dG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmJiBzZWxlY3RvcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA4OGYw
Mzk2NTBiMDYxMjA0ZmQ3NGIxZjFhOTk2OWVkMjkwNzVlNDM2Li42YjI4Mjk4YzZmYzdkN2EyNTY3
NTM1ZjM5YTViNmJiN2IwYjM0N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTc5NCw3ICs3OTQsOSBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgTm9kZTo6ZGVyZWYoKSBjb25zdAogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgorSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJub25udWxsIikKICAgICAgICAgY29uc3RfY2FzdDxOb2RlJj4o
KnRoaXMpLnJlbW92ZWRMYXN0UmVmKCk7CitJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgbV9yZWZDb3VudEFuZFBhcmVudEJpdCA9IHVwZGF0ZWRSZWZDb3Vu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA3NWZiMWZh
ZWRmZWYzNDIwOGE4MWFiYzNiZjEyOTE0MzI3NGEyNDMuLmYxMWQzOGI2YTFhYTc5M2ExNTkyN2E2
NzA0OGYyZTcxNTFjNzFkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtODA2LDcgKzgwNiw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjCiAgICAgICAg
IH0KICAgICAgICAgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgIH0KK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIpCiAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0
aW9uQ2xpZW50KCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChj
aGFsbGVuZ2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEFTU0VSVCghbV9oYW5kbGUgfHwg
IW1faGFuZGxlLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA2YTVmYzM4
NGZkZWU2ZjcyODA0YTFjMmFlNTQxZGRkYTJjNGJiMmUzLi5kNjk3NjZmODk0ZjNjYzUxZWU2YzVk
NTNjZmFmMTNhNThlMzFhM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTQ1LDEyICsxNDUsMTQgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IG1fbG9hZGVyOwogfTsKIAorSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJub25udWxsIikKIFBsdWdpblZpZXc6OlN0cmVhbTo6flN0cmVhbSgp
CiB7CiAgICAgaWYgKG1fbG9hZENhbGxiYWNrKQogICAgICAgICBtX2xvYWRDYWxsYmFjayh7IH0p
OwogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsKIH0KK0lHTk9SRV9XQVJOSU5HU19FTkQKICAg
ICAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpzdGFydCgpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426475</attachid>
            <date>2021-04-19 14:15:42 -0700</date>
            <delta_ts>2021-04-19 14:23:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224452-20210419161542.patch</filename>
            <type>text/plain</type>
            <size>1598</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2Vi
S2l0Q29tcGlsZXJGbGFncy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZsYWdz
LmNtYWtlCmluZGV4IGU1NDc0YWM5YTNhNDQyMTk4OTdlOWU5Yzc1NTViZmFkYjMyYWVlYjMuLjhi
MGFkMzhjMTBlOGEzMzFmZjQzNjRjMTA5ZTEzZDQ5OTZjZGE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9XZWJLaXRDb21waWxlckZsYWdzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJL
aXRDb21waWxlckZsYWdzLmNtYWtlCkBAIC0xMjksNyArMTI5LDEwIEBAIGlmIChDT01QSUxFUl9J
U19HQ0NfT1JfQ0xBTkcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC1Xbm8tbWlzbGVhZGluZy1pbmRlbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtV25vLXBzYWJpKQogCi0gICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NY
WF9GTEFHUygtV25vLW5vZXhjZXB0LXR5cGUpCisgICAgIyAtV25vbm51bGwgaXMgZGlzYWJsZWQg
b25seSBpbiBDKysgZHVlIHRvIHRvbyBtYW55IGZhbHNlLXBvc2l0aXZlcyBzaW5jZSBHQ0MgMTEu
CisgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDUyCisg
ICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NYWF9GTEFHUygtV25vLW5vZXhjZXB0LXR5cGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tbm9ubnVsbCkKIAogICAgICMg
aHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9ODA5NDcKICAgICBp
ZiAoJHtDTUFLRV9DWFhfQ09NUElMRVJfVkVSU0lPTn0gVkVSU0lPTl9MRVNTICI4LjAiIEFORCBO
T1QgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIE1BVENIRVMgIkNsYW5nIikKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwZTI3OTM2OWRmZTg3ZmM4YTViNjU5MTk2NDg0ZjMy
NGQ4Y2Q3Y2I5Li4xYWFhMmI2MmMwZmMyNDVlNjhkYmVmMWQ2Y2E0YjZjZmM5MjVmMjI3IDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc2FibGUgLVdub25u
dWxsLiBJdCdzIHRyeWluZyB0byBoYXJkIGFuZCBwcm9kdWNpbmcgdG9vIG1hbnkgbm9uLXVzZWZ1
bCBkaWFnbm9zdGljcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZs
YWdzLmNtYWtlOgorCiAyMDIxLTA0LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBTd2l0Y2ggdG8gbGlic291cDMgYnkgZGVmYXVs
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426476</attachid>
            <date>2021-04-19 14:23:24 -0700</date>
            <delta_ts>2021-04-19 14:40:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224452-20210419162323.patch</filename>
            <type>text/plain</type>
            <size>1598</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2Vi
S2l0Q29tcGlsZXJGbGFncy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZsYWdz
LmNtYWtlCmluZGV4IGU1NDc0YWM5YTNhNDQyMTk4OTdlOWU5Yzc1NTViZmFkYjMyYWVlYjMuLjhi
MGFkMzhjMTBlOGEzMzFmZjQzNjRjMTA5ZTEzZDQ5OTZjZGE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9XZWJLaXRDb21waWxlckZsYWdzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJL
aXRDb21waWxlckZsYWdzLmNtYWtlCkBAIC0xMjksNyArMTI5LDEwIEBAIGlmIChDT01QSUxFUl9J
U19HQ0NfT1JfQ0xBTkcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC1Xbm8tbWlzbGVhZGluZy1pbmRlbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtV25vLXBzYWJpKQogCi0gICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NY
WF9GTEFHUygtV25vLW5vZXhjZXB0LXR5cGUpCisgICAgIyAtV25vbm51bGwgaXMgZGlzYWJsZWQg
b25seSBpbiBDKysgZHVlIHRvIHRvbyBtYW55IGZhbHNlLXBvc2l0aXZlcyBzaW5jZSBHQ0MgMTEu
CisgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDUyCisg
ICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NYWF9GTEFHUygtV25vLW5vZXhjZXB0LXR5cGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tbm9ubnVsbCkKIAogICAgICMg
aHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9ODA5NDcKICAgICBp
ZiAoJHtDTUFLRV9DWFhfQ09NUElMRVJfVkVSU0lPTn0gVkVSU0lPTl9MRVNTICI4LjAiIEFORCBO
T1QgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIE1BVENIRVMgIkNsYW5nIikKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwZTI3OTM2OWRmZTg3ZmM4YTViNjU5MTk2NDg0ZjMy
NGQ4Y2Q3Y2I5Li4xYWFhMmI2MmMwZmMyNDVlNjhkYmVmMWQ2Y2E0YjZjZmM5MjVmMjI3IDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc2FibGUgLVdub25u
dWxsLiBJdCdzIHRyeWluZyB0byBoYXJkIGFuZCBwcm9kdWNpbmcgdG9vIG1hbnkgbm9uLXVzZWZ1
bCBkaWFnbm9zdGljcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZs
YWdzLmNtYWtlOgorCiAyMDIxLTA0LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBTd2l0Y2ggdG8gbGlic291cDMgYnkgZGVmYXVs
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426479</attachid>
            <date>2021-04-19 14:40:16 -0700</date>
            <delta_ts>2021-04-20 15:45:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224452-20210419164015.patch</filename>
            <type>text/plain</type>
            <size>8152</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTdjMjBhZjA5MzFiYWZkMjY3NmEyMDhlYjM5YjJmYjQ5NGU4NjdjLi5iMGY5ZWNiMmZhNTUyYTg5
Yjc4MzU5MDEyMzk3ODBlYmYyMTVkYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBMb3RzIG9mIHNwdXJpb3VzIC1Xbm9ubnVsbCB3YXJuaW5ncyB3
aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KToKKyAgICAgICAgKiB3
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkQ3VycmVudE1lbW9yeSk6CisKIDIwMjEtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NjIwZmRjNjViYTdjODlhYjNjODQzNzRkMTU3MjdmNDI5NzJmZjgwNS4uMzNiNzEwMzZiMDJmMWQ1
YzljNzgxZDgzZjRkZTA4OTYyNTcwNDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNC0x
OSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBM
b3RzIG9mIHNwdXJpb3VzIC1Xbm9ubnVsbCB3YXJuaW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDUyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUmVmUHRyLmg6Cisg
ICAgICAgIChXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwpOgorCiAy
MDIxLTA0LTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgdG8gU2V0dGluZ3MgKFBhcnQgMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzN2MzZGMxMjRmODI0M2Y2ZGMzMzJlODZkNDU5ZjQ1MzJiZTFiMTY0Li44MWEyZTk5NjQxZmVh
ZDBlNDg5ZTQzZjQ1ZDE0OWUzNmJiMGIxZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjEtMDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisK
KyAgICAgICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVyZWYpOgorICAgICAgICAq
IGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmRlcmVm
IGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
ZGVyZWYgY29uc3QpOgorCiAyMDIxLTA0LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIHBy
ZWFsbG9jYXRlIGF1ZGlvIGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmM2FjODEwYjM1NDJmZDNkNWM1Yzk3
OTk4NWUwMzA4MzM2MDJlN2I5Li4zMjU2MWQxNTNiMTZmM2QzZjVjZThlZTljODdhOWYwNDA0YmM1
ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA0LTE5ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIExvdHMgb2Ygc3B1cmlvdXMg
LVdub25udWxsIHdhcm5pbmdzIHdpdGggR0NDIDExCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKwogMjAyMS0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVwZGF0ZSBMaWJXZWJSVENDb2RlY3NQcm94eSB0byB1c2UgYSBMb2NrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBmOTAw
ZTkwZTNhNTJhMjZhOTE3ODNkYWJhZjE1NTViNWRhMzRiNzZhLi40ZTlkZGJkMGM3OWUxOTUzMDg5
MThhOGI2Y2Y3Y2RjOGNkOTU3YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTk0NCw3ICs5NDQsOSBAQCB2b2lkIEFpcklS
R2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3Rh
Y2tMaW1pdCByZXN0bwogCiAgICAgaWYgKHJlc3RvcmVDYWNoZWRTdGFja0xpbWl0ID09IFJlc3Rv
cmVDYWNoZWRTdGFja0xpbWl0OjpZZXMpIHsKICAgICAgICAgLy8gVGhlIEluc3RhbmNlIGNhY2hl
cyB0aGUgc3RhY2sgbGltaXQsIGJ1dCBhbHNvIGtub3dzIHdoZXJlIGl0cyBjYW5vbmljYWwgbG9j
YXRpb24gaXMuCitJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxJbnN0YW5jZSo+KG51bGxwdHIp
LT5jYWNoZWRTdGFja0xpbWl0KCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7CitJR05PUkVf
V0FSTklOR1NfRU5ECiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZv
cm0oSW5zdGFuY2U6Om9mZnNldE9mUG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCgpLCBCMzo6V2lk
dGg2NCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCksIEIzOjpXaWR0aDY0KSk7CkBAIC0xMjYz
LDcgKzEyNjUsOSBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Np
b25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEFpcklSR2VuZXJh
dG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIpCiAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8TWVtb3J5Kj4obnVsbHB0ciktPnNpemUo
KSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgIGF1dG8gdGVtcDEgPSBnNjQoKTsKICAgICBhdXRv
IHRlbXAyID0gZzY0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKaW5kZXggMGJiNzRjOGJmZWE4ZTBjODYyNWVhNGU4YzdiYzI5NmI2NGZm
NGMxMi4uMmE3NjI5NTA5NTZjZWJlMzk5YTY2ZjhlOTI1NzYwODdhOWJhYTYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtODc5
LDcgKzg3OSw5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9u
VHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIpCiAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8TWVtb3J5Kj4obnVsbHB0ciktPnNpemUoKSkp
ID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKK0lH
Tk9SRV9XQVJOSU5HU19FTkQKICAgICBWYWx1ZSogbWVtb3J5ID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGluc3Rh
bmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkp
KTsKICAgICBWYWx1ZSogaGFuZGxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIG1lbW9yeSwgc2FmZUNhc3Q8aW50
MzJfdD4oTWVtb3J5OjpvZmZzZXRPZkhhbmRsZSgpKSk7CiAgICAgVmFsdWUqIHNpemUgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBv
cmlnaW4oKSwgaGFuZGxlLCBzYWZlQ2FzdDxpbnQzMl90PihNZW1vcnlIYW5kbGU6Om9mZnNldE9m
U2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9X
VEYvd3RmL1JlZlB0ci5oCmluZGV4IDcxMTU1ZmI2MzQwNTU4MzRkNzcxMGM4ZjRlYzM0NTEzMmIy
OGE5YmYuLjM3NTQwMmE2ZmEzM2Q0MDNkZTU4NjJjZTZmZDMwNDYyZTJkZDE0YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5o
CkBAIC0zOCw4ICszOCwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdFJl
ZkRlcmVmVHJhaXRzIHsKIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWZJZk5v
dE51bGwoVCogcHRyKQogICAgIHsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigibm9ubnVsbCIpCiAg
ICAgICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQogICAgICAgICAgICAgcHRyLT5kZXJl
ZigpOworSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgK
aW5kZXggMzkxNjg2ZGZkYTk3MjMxYjQwYjE4ZTIyMGY1MzNiY2QwOWU5YmQ2My4uYWI2MjQ5MjFj
Y2U1NjYzNGI0MTk4NjJhNTZlM2JjMjllNTdjODM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAg
LTcwLDcgKzcwLDkgQEAgcHVibGljOgogICAgICAgICAvLyB0aGUgYXBwcm9wcmlhdGUgc3ViY2xh
c3MgdHlwZS4KICAgICAgICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZDb3VudCAtIHJl
ZkNvdW50SW5jcmVtZW50OwogICAgICAgICBpZiAoIXRlbXBSZWZDb3VudCkgeworSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJub25udWxsIikKICAgICAgICAgICAgIGRlc3Ryb3koKTsKK0lHTk9SRV9X
QVJOSU5HU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3Jl
ZkNvdW50ID0gdGVtcFJlZkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IGUwMmM1NmEx
NDdjOWJjZjI4ZGM2NDU2NDNlYWViZjIyOWUyNzdlYzAuLmE5Y2M2NjcyMzI5NTRkODA4ZWFiMDMx
OGM4NzJmMDg3YTkyZTJlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTI3Niw4ICsyNzYs
MTAgQEAgaW5saW5lIFN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UoY29uc3QgU3R5bGVSdWxl
QmFzZSYgbykKIAogaW5saW5lIHZvaWQgU3R5bGVSdWxlQmFzZTo6ZGVyZWYoKSBjb25zdAogewor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJub25udWxsIikKICAgICBpZiAoZGVyZWZCYXNlKCkpCiAg
ICAgICAgIGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlzKS5kZXN0cm95KCk7CitJR05P
UkVfV0FSTklOR1NfRU5ECiB9CiAKIGlubGluZSB2b2lkIFN0eWxlUnVsZTo6d3JhcHBlckFkb3B0
U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYmIHNlbGVjdG9ycykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4
IDg4ZjAzOTY1MGIwNjEyMDRmZDc0YjFmMWE5OTY5ZWQyOTA3NWU0MzYuLjZiMjgyOThjNmZjN2Q3
YTI1Njc1MzVmMzlhNWI2YmI3YjBiMzQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNzk0LDcgKzc5NCw5
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBOb2RlOjpkZXJlZigpIGNvbnN0CiAjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwogI2VuZGlm
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogICAgICAgICBjb25zdF9jYXN0PE5v
ZGUmPigqdGhpcykucmVtb3ZlZExhc3RSZWYoKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBtX3JlZkNvdW50QW5kUGFyZW50Qml0ID0gdXBkYXRlZFJl
ZkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCA2YTVmYzM4NGZkZWU2ZjcyODA0YTFjMmFlNTQxZGRkYTJjNGJiMmUzLi5kNjk3
NjZmODk0ZjNjYzUxZWU2YzVkNTNjZmFmMTNhNThlMzFhM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTQ1LDEyICsxNDUsMTQg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IG1fbG9h
ZGVyOwogfTsKIAorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJub25udWxsIikKIFBsdWdpblZpZXc6
OlN0cmVhbTo6flN0cmVhbSgpCiB7CiAgICAgaWYgKG1fbG9hZENhbGxiYWNrKQogICAgICAgICBt
X2xvYWRDYWxsYmFjayh7IH0pOwogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsKIH0KK0lHTk9S
RV9XQVJOSU5HU19FTkQKICAgICAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpzdGFydCgpCiB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426605</attachid>
            <date>2021-04-20 15:45:09 -0700</date>
            <delta_ts>2021-04-20 15:59:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224452-20210420174508.patch</filename>
            <type>text/plain</type>
            <size>5721</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkzZDYwYTg5MmJlNGIzYzJiMDk3NTQz
MWNmNmQyZTI1MWU5Njk4NmEuLjYwYzA1OGJhMGNlYmI2YjFjYTEwY2I4YTg4NDlmZjdiODQ2NTJj
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51
bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAgICAgICAoV1RGOjpEZWZhdWx0UmVm
RGVyZWZUcmFpdHM6OmRlcmVmSWZOb3ROdWxsKToKKwogMjAyMS0wNC0yMCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB3ZSBkb24ndCBleGl0IHRo
ZSBHUFVQcm9jZXNzIHRvbyBmcmVxdWVudGx5IHdoaWxlIHVuZGVyIG1lbW9yeSBwcmVzc3VyZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGJlZDYyMmY3NTNmM2UxYWEyNmI4ZjZlODg3ODRiZDU3OWRiOWMyMmEuLjY3
OWQxMDE1ODE4NTc5ZTE1ZmJlNTY2MThjZTZkYjYzYTM4OGQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBMb3RzIG9mIHNwdXJpb3VzIC1Xbm9ubnVsbCB3YXJuaW5ncyB3
aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXJlZik6
CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxl
QmFzZTo6ZGVyZWYgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkZXJlZiBjb25zdCk6CisKIDIwMjEtMDQtMjAgIEFkaXR5YSBLZWVydGhpICA8
YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzU1MjMpOiBbaU9T
XSBPcGFxdWUgc3lzdGVtIGZpbGwgY29sb3JzIGFyZSBpbmNvcnJlY3QgaW4gZGFyayBtb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDA0YTNjZGIxZTg0YzU4MjYzM2NiOGM0MzA1NjQxMDcxZDViMDI0NWQuLjQ0ZWZl
NWMyN2NiYThmOTVkMjkzZjQ4MjYxNmUzNjU4ZTA3NDNhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjEtMDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5v
cmc+CisKKyAgICAgICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51bGwgd2FybmluZ3Mgd2l0aCBH
Q0MgMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorCiAyMDIxLTA0LTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIGFkZGl0
aW9uYWwgbG9nZ2luZyB0byBoZWxwIGlkZW50aWZ5IFNTTyBkaWFsb2cgZGlzbWlzc2FscwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBp
bGVyLmgKaW5kZXggZWZjYzc0Mzk1YmE2MjU5ODdkMjlhOGZmZDlhOWI5NTIwZTYwMTM5OS4uNDc1
NjI5YWZiNjRiOTAzYjQ0YWYzN2Y1OGFjNjQwYjg0Mjc2ZjA0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC01
MDIsMyArNTAyLDYgQEAKIAogI2RlZmluZSBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19CRUdJ
TiBJR05PUkVfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQogI2RlZmluZSBJR05PUkVfTlVMTF9D
SEVDS19XQVJOSU5HU19FTkQgSUdOT1JFX1dBUk5JTkdTX0VORAorCisjZGVmaW5lIElHTk9SRV9F
UlJPTkVPVVNfR0NDX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVHSU4gSUdOT1JFX0dDQ19XQVJOSU5H
U19CRUdJTigibm9ubnVsbCIpCisjZGVmaW5lIElHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExfQ0hF
Q0tfV0FSTklOR1NfRU5EIElHTk9SRV9HQ0NfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmluZGV4IDcxMTU1
ZmI2MzQwNTU4MzRkNzcxMGM4ZjRlYzM0NTEzMmIyOGE5YmYuLjQ3ZjliOTk1YWViMDk4MDgxZWVi
OTMzMWNlNDI1YTQzZDQ4NGFkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0zOCw4ICszOCwxMCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzIHsKIAogICAgIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWZJZk5vdE51bGwoVCogcHRyKQogICAgIHsKK0lHTk9S
RV9FUlJPTkVPVVNfR0NDX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVHSU4KICAgICAgICAgaWYgKExJ
S0VMWShwdHIgIT0gbnVsbHB0cikpCiAgICAgICAgICAgICBwdHItPmRlcmVmKCk7CitJR05PUkVf
RVJST05FT1VTX0dDQ19OVUxMX0NIRUNLX1dBUk5JTkdTX0VORAogICAgIH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmgKaW5kZXggMzkxNjg2ZGZkYTk3MjMxYjQwYjE4ZTIyMGY1MzNiY2QwOWU5YmQ2
My4uMWU2MzA3Njc0YjFmZGFhYjhlMGZjZTk5ODE4ZWM0NDkxY2E2Mjc3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKQEAgLTcwLDcgKzcwLDkgQEAgcHVibGljOgogICAgICAgICAvLyB0aGUgYXBwcm9w
cmlhdGUgc3ViY2xhc3MgdHlwZS4KICAgICAgICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9y
ZWZDb3VudCAtIHJlZkNvdW50SW5jcmVtZW50OwogICAgICAgICBpZiAoIXRlbXBSZWZDb3VudCkg
eworSUdOT1JFX0VSUk9ORU9VU19HQ0NfTlVMTF9DSEVDS19XQVJOSU5HU19CRUdJTgogICAgICAg
ICAgICAgZGVzdHJveSgpOworSUdOT1JFX0VSUk9ORU9VU19HQ0NfTlVMTF9DSEVDS19XQVJOSU5H
U19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3JlZkNvdW50
ID0gdGVtcFJlZkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IGUwMmM1NmExNDdjOWJj
ZjI4ZGM2NDU2NDNlYWViZjIyOWUyNzdlYzAuLmQ2MmI3NzAwYjMwMTI2MzE4ODA4MTgzNDU5NmY2
YzJlMTk1MWQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTI3Nyw3ICsyNzcsOSBAQCBp
bmxpbmUgU3R5bGVSdWxlQmFzZTo6U3R5bGVSdWxlQmFzZShjb25zdCBTdHlsZVJ1bGVCYXNlJiBv
KQogaW5saW5lIHZvaWQgU3R5bGVSdWxlQmFzZTo6ZGVyZWYoKSBjb25zdAogewogICAgIGlmIChk
ZXJlZkJhc2UoKSkKK0lHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVH
SU4KICAgICAgICAgY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpLmRlc3Ryb3koKTsK
K0lHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5ECiB9CiAKIGlubGlu
ZSB2b2lkIFN0eWxlUnVsZTo6d3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlz
dCYmIHNlbGVjdG9ycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDg4ZjAzOTY1MGIwNjEyMDRmZDc0YjFmMWE5
OTY5ZWQyOTA3NWU0MzYuLmNhYjFiMGE3NDY0OTg3YTMxOTVjMWRhMmYwYzAzMGJlNGI1MTdmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtNzk0LDcgKzc5NCwxMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTm9k
ZTo6ZGVyZWYoKSBjb25zdAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1faW5SZW1vdmVk
TGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1MiNjMjEKK0lHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExf
Q0hFQ0tfV0FSTklOR1NfQkVHSU4KICAgICAgICAgY29uc3RfY2FzdDxOb2RlJj4oKnRoaXMpLnJl
bW92ZWRMYXN0UmVmKCk7CitJR05PUkVfRVJST05FT1VTX0dDQ19OVUxMX0NIRUNLX1dBUk5JTkdT
X0VORAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fcmVmQ291bnRBbmRQYXJlbnRCaXQg
PSB1cGRhdGVkUmVmQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IDZhNWZjMzg0ZmRlZTZmNzI4MDRhMWMyYWU1NDFkZGRhMmM0
YmIyZTMuLmVjNmIyZDU5ZDAwZTZlN2ZiNGMyNmJiM2I2YWZmNjdhYWFhMjQ1OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNDUs
MTIgKzE0NSwxNSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gbV9sb2FkZXI7CiB9OwogCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NDUyI2MyNAorSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVHSU4KIFBs
dWdpblZpZXc6OlN0cmVhbTo6flN0cmVhbSgpCiB7CiAgICAgaWYgKG1fbG9hZENhbGxiYWNrKQog
ICAgICAgICBtX2xvYWRDYWxsYmFjayh7IH0pOwogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsK
IH0KK0lHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0VORAogICAgIAogdm9pZCBQbHVnaW5WaWV3
OjpTdHJlYW06OnN0YXJ0KCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426607</attachid>
            <date>2021-04-20 15:59:46 -0700</date>
            <delta_ts>2021-04-20 17:08:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224452-20210420175945.patch</filename>
            <type>text/plain</type>
            <size>5651</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0ODEyMzRjZGVlM2YzN2U4ZTExNDBh
MGNhODlmZTYyNmRmNDcyNjAuLmJmODliNjk5YzEzOWMzOTc2NTA2NTJmZjkxMWU2ZWI5ZTQyMmUz
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgTG90cyBvZiBzcHVyaW91cyAtV25vbm51
bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAgICAgICAoV1RGOjpEZWZhdWx0UmVmRGVy
ZWZUcmFpdHM6OmRlcmVmSWZOb3ROdWxsKToKKwogMjAyMS0wNC0yMCAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
IHNob3VsZCB1c2UgdGhlIHBlcmNlbnRhZ2Ugb2YgcGFnZXMgdW5jb21wcmVzc2VkIGluIFJBTSB0
byBkZXRlcm1pbmUgZGVmZXJyYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3OGUyN2UzN2I4MjUxZTUzZmM0
Nzk5OTBhNTAxYzU3OTZmYjI2MS4uMWMxYjhmNjZmZTJkMDFiZjQzYzBhMzQ0YjJhOWMxYTI4MjUy
MzhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTIwICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIExvdHMgb2Ygc3B1cmlv
dXMgLVdub25udWxsIHdhcm5pbmdzIHdpdGggR0NDIDExCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NTIKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OmRlcmVmKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpkZXJlZiBjb25zdCk6CisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRlcmVmIGNvbnN0KToKKwogMjAyMS0wNC0y
MCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11b
RkNSXSBVcGRhdGUgZGF0ZS90aW1lIHBpY2tlciBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ0YWI2
ZmM0MDM0YzhlNTVkYTZjMzI0Zjk1ZDIxYjdmZDIxZDhlNzkuLmFmN2VhMDlmYzQyYjI3MDlmNjQz
MmE0ZWRlMzc0ODFlYjhkZmNkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDQt
MjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAg
TG90cyBvZiBzcHVyaW91cyAtV25vbm51bGwgd2FybmluZ3Mgd2l0aCBHQ0MgMTEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorCiAyMDIxLTA0LTIwICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIFVwZGF0ZSBkYXRlL3RpbWUgcGlja2Vy
IGFwcGVhcmFuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IGVmY2M3NDM5NWJhNjI1OTg3ZDI5YThmZmQ5YTli
OTUyMGU2MDEzOTkuLmI4MTFmOWFkZWJmYTkwODFkNTg4ZDVjYjgxYWI1ZDQxNzFkM2E4Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
Q29tcGlsZXIuaApAQCAtNTAyLDMgKzUwMiw3IEBACiAKICNkZWZpbmUgSUdOT1JFX05VTExfQ0hF
Q0tfV0FSTklOR1NfQkVHSU4gSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJub25udWxsIikKICNkZWZp
bmUgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5EIElHTk9SRV9XQVJOSU5HU19FTkQKKwor
LyogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ1MiAqLworI2Rl
ZmluZSBJR05PUkVfRVJST05FT1VTX0dDQ19OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOIElHTk9S
RV9HQ0NfV0FSTklOR1NfQkVHSU4oIm5vbm51bGwiKQorI2RlZmluZSBJR05PUkVfRVJST05FT1VT
X0dDQ19OVUxMX0NIRUNLX1dBUk5JTkdTX0VORCBJR05PUkVfR0NDX1dBUk5JTkdTX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAppbmRleCA3MTE1NWZiNjM0MDU1ODM0ZDc3MTBjOGY0ZWMzNDUxMzJiMjhhOWJmLi40N2Y5Yjk5
NWFlYjA5ODA4MWVlYjkzMzFjZTQyNWE0M2Q0ODRhZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMzgsOCArMzgs
MTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRSZWZEZXJlZlRyYWl0cyB7
CiAKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQqIHB0cikK
ICAgICB7CitJR05PUkVfRVJST05FT1VTX0dDQ19OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOCiAg
ICAgICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQogICAgICAgICAgICAgcHRyLT5kZXJl
ZigpOworSUdOT1JFX0VSUk9ORU9VU19HQ0NfTlVMTF9DSEVDS19XQVJOSU5HU19FTkQKICAgICB9
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDM5MTY4NmRmZGE5NzIzMWI0MGIxOGUyMjBm
NTMzYmNkMDllOWJkNjMuLjFlNjMwNzY3NGIxZmRhYWI4ZTBmY2U5OTgxOGVjNDQ5MWNhNjI3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC03MCw3ICs3MCw5IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gdGhlIGFwcHJvcHJpYXRlIHN1YmNsYXNzIHR5cGUuCiAgICAgICAgIHVuc2lnbmVkIHRlbXBS
ZWZDb3VudCA9IG1fcmVmQ291bnQgLSByZWZDb3VudEluY3JlbWVudDsKICAgICAgICAgaWYgKCF0
ZW1wUmVmQ291bnQpIHsKK0lHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExfQ0hFQ0tfV0FSTklOR1Nf
QkVHSU4KICAgICAgICAgICAgIGRlc3Ryb3koKTsKK0lHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExf
Q0hFQ0tfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgbV9yZWZDb3VudCA9IHRlbXBSZWZDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBl
MDJjNTZhMTQ3YzliY2YyOGRjNjQ1NjQzZWFlYmYyMjllMjc3ZWMwLi5kNjJiNzcwMGIzMDEyNjMx
ODgwODE4MzQ1OTZmNmMyZTE5NTFkN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0yNzcs
NyArMjc3LDkgQEAgaW5saW5lIFN0eWxlUnVsZUJhc2U6OlN0eWxlUnVsZUJhc2UoY29uc3QgU3R5
bGVSdWxlQmFzZSYgbykKIGlubGluZSB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlcmVmKCkgY29uc3QK
IHsKICAgICBpZiAoZGVyZWZCYXNlKCkpCitJR05PUkVfRVJST05FT1VTX0dDQ19OVUxMX0NIRUNL
X1dBUk5JTkdTX0JFR0lOCiAgICAgICAgIGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlz
KS5kZXN0cm95KCk7CitJR05PUkVfRVJST05FT1VTX0dDQ19OVUxMX0NIRUNLX1dBUk5JTkdTX0VO
RAogfQogCiBpbmxpbmUgdm9pZCBTdHlsZVJ1bGU6OndyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChD
U1NTZWxlY3Rvckxpc3QmJiBzZWxlY3RvcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA4OGYwMzk2NTBiMDYx
MjA0ZmQ3NGIxZjFhOTk2OWVkMjkwNzVlNDM2Li5mM2E3YWI0NGU5N2U3NzlkZjNjYjM2NjA4MmU3
Y2JhOTQ0MDM0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTc5NCw3ICs3OTQsOSBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgTm9kZTo6ZGVyZWYoKSBjb25zdAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgorSUdOT1JFX0VSUk9O
RU9VU19HQ0NfTlVMTF9DSEVDS19XQVJOSU5HU19CRUdJTgogICAgICAgICBjb25zdF9jYXN0PE5v
ZGUmPigqdGhpcykucmVtb3ZlZExhc3RSZWYoKTsKK0lHTk9SRV9FUlJPTkVPVVNfR0NDX05VTExf
Q0hFQ0tfV0FSTklOR1NfRU5ECiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9yZWZDb3Vu
dEFuZFBhcmVudEJpdCA9IHVwZGF0ZWRSZWZDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNmE1ZmMzODRmZGVlNmY3MjgwNGEx
YzJhZTU0MWRkZGEyYzRiYjJlMy4uMGRjN2M5ZDhiNGE2YmM1ZGNhMGQ2YzVmNTZkODU4M2U4MTE5
NjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTE0NSwxMiArMTQ1LDE0IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBtX2xvYWRlcjsKIH07CiAKK0lHTk9SRV9FUlJPTkVPVVNfR0ND
X05VTExfQ0hFQ0tfV0FSTklOR1NfQkVHSU4KIFBsdWdpblZpZXc6OlN0cmVhbTo6flN0cmVhbSgp
CiB7CiAgICAgaWYgKG1fbG9hZENhbGxiYWNrKQogICAgICAgICBtX2xvYWRDYWxsYmFjayh7IH0p
OwogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsKIH0KK0lHTk9SRV9FUlJPTkVPVVNfR0NDX05V
TExfQ0hFQ0tfV0FSTklOR1NfRU5ECiAgICAgCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6c3Rh
cnQoKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>