<?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>53123</bug_id>
          
          <creation_ts>2011-01-25 13:44:24 -0800</creation_ts>
          <short_desc>Crashes loading pages when cancelling subresource loads through WebKit</short_desc>
          <delta_ts>2011-01-26 11:39:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>339894</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-01-25 13:44:24 -0800</bug_when>
    <thetext>r75174 added a way to cancel resource loads for WebKit2 at the WebKit layer. However, using it to cancel resource loads showed some crashes in both WebKit1 and WebKit2 modes that are exposed when willSendRequest clears our the ResourceRequest.

One of the first crashes was infinite recursion under CachedResourceLoader::checkForPendingPreloads.

 &gt;	WebKit.dll!_chkstk()  Line 99	Asm
 	WebKit.dll!WebCore::KURL::init(const WebCore::KURL &amp; base={file:///C:/Users/bweinstein/Desktop/cnn_main.html}, const WTF::String &amp; relative={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WebCore::TextEncoding &amp; encoding={...})  Line 412	C++
 	WebKit.dll!WebCore::KURL::KURL(const WebCore::KURL &amp; base={file:///C:/Users/bweinstein/Desktop/cnn_main.html}, const WTF::String &amp; relative={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WebCore::TextEncoding &amp; encoding={...})  Line 337	C++
 	WebKit.dll!WebCore::Document::completeURL(const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js})  Line 3934 + 0x26 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::checkForPendingPreloads()  Line 592 + 0x16 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadDone(WebCore::CachedResourceRequest * request=0x00000000)  Line 523	C++
 	WebKit.dll!WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, WebCore::CachedResource * resource=0x17170e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 128	C++
 	WebKit.dll!WebCore::CachedResourceLoader::load(WebCore::CachedResource * resource=0x17170e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 509 + 0x1d bytes	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 133	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48)  Line 83 + 0x20 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type type=Script, const WebCore::KURL &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved)  Line 361 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type=Script, const WTF::String &amp; resourceURL={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved, bool forPreload=true)  Line 301 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestPreload(WebCore::CachedResource::Type type=Script, const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={})  Line 604 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::checkForPendingPreloads()  Line 594	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadDone(WebCore::CachedResourceRequest * request=0x00000000)  Line 523	C++
 	WebKit.dll!WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, WebCore::CachedResource * resource=0x172b4e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 128	C++
 	WebKit.dll!WebCore::CachedResourceLoader::load(WebCore::CachedResource * resource=0x172b4e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 509 + 0x1d bytes	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 133	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48)  Line 83 + 0x20 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type type=Script, const WebCore::KURL &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved)  Line 361 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type=Script, const WTF::String &amp; resourceURL={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved, bool forPreload=true)  Line 301 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestPreload(WebCore::CachedResource::Type type=Script, const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={})  Line 604 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::checkForPendingPreloads()  Line 594	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadDone(WebCore::CachedResourceRequest * request=0x00000000)  Line 523	C++
 	WebKit.dll!WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, WebCore::CachedResource * resource=0x172a4e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 128	C++
 	WebKit.dll!WebCore::CachedResourceLoader::load(WebCore::CachedResource * resource=0x172a4e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 509 + 0x1d bytes	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 133	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48)  Line 83 + 0x20 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type type=Script, const WebCore::KURL &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved)  Line 361 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type=Script, const WTF::String &amp; resourceURL={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved, bool forPreload=true)  Line 301 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestPreload(WebCore::CachedResource::Type type=Script, const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={})  Line 604 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::checkForPendingPreloads()  Line 594	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadDone(WebCore::CachedResourceRequest * request=0x00000000)  Line 523	C++
 	WebKit.dll!WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, WebCore::CachedResource * resource=0x16d6ce00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 128	C++
 	WebKit.dll!WebCore::CachedResourceLoader::load(WebCore::CachedResource * resource=0x16d6ce00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 509 + 0x1d bytes	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 133	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48)  Line 83 + 0x20 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type type=Script, const WebCore::KURL &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved)  Line 361 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type=Script, const WTF::String &amp; resourceURL={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved, bool forPreload=true)  Line 301 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestPreload(WebCore::CachedResource::Type type=Script, const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={})  Line 604 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::checkForPendingPreloads()  Line 594	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadDone(WebCore::CachedResourceRequest * request=0x00000000)  Line 523	C++
 	WebKit.dll!WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, WebCore::CachedResource * resource=0x17184e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 128	C++
 	WebKit.dll!WebCore::CachedResourceLoader::load(WebCore::CachedResource * resource=0x17184e00, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 509 + 0x1d bytes	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 133	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0c4f8f48)  Line 83 + 0x20 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type type=Script, const WebCore::KURL &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved)  Line 361 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type=Script, const WTF::String &amp; resourceURL={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved, bool forPreload=true)  Line 301 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestPreload(WebCore::CachedResource::Type type=Script, const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={})  Line 604 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::checkForPendingPreloads()  Line 594	C++

(this is a very small part of the stack).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339900</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-01-25 13:50:21 -0800</bug_when>
    <thetext>To fix this, I switched CachedResourceLoader::m_pendingPreloads to be a Deque instead of a Vector, so we wouldn&apos;t infinitely recurse trying to preload the same subresource - however that gave us a crash under CachedResource::load because CachedResource::setRequest was being called, which deleted the CachedResource before we were done with it.

This object was deleted soon after - and this code had been there since the beginning of time, and was never called in normal browsing except in the new code path that can cancel resource loads.

Backtrace:

&gt;	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0ee57f40, bool incremental=false, WebCore::SecurityCheckPolicy securityCheck=DoSecurityCheck, bool sendResourceLoadCallbacks=true)  Line 133 + 0x3 bytes	C++
 	WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader * cachedResourceLoader=0x0ee57f40)  Line 83 + 0x20 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type type=Script, const WebCore::KURL &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved)  Line 361 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type=Script, const WTF::String &amp; resourceURL={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1}, WebCore::ResourceLoadPriority priority=ResourceLoadPriorityUnresolved, bool forPreload=false)  Line 297 + 0x18 bytes	C++
 	WebKit.dll!WebCore::CachedResourceLoader::requestScript(const WTF::String &amp; url={http://i.cdn.turner.com/cnn/.element/js/3.0/s_code.js}, const WTF::String &amp; charset={ISO-8859-1})  Line 176	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::requestPendingScript(WebCore::PendingScript &amp; pendingScript={...}, WebCore::Element * script=0x10c2cfa8)  Line 274 + 0x32 bytes	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::requestParsingBlockingScript(WebCore::Element * element=0x10c2cfa8)  Line 240 + 0x13 bytes	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::runScript(WebCore::Element * script=0x10c2cfa8, const WTF::TextPosition&lt;WTF::OneBasedNumber&gt; &amp; scriptStartPosition={...})  Line 305 + 0xc bytes	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt; scriptElement={...}, const WTF::TextPosition&lt;WTF::OneBasedNumber&gt; &amp; scriptStartPosition={...})  Line 175	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder()  Line 199 + 0x23 bytes	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode mode=AllowYield)  Line 244 + 0x8 bytes	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode mode=AllowYield)  Line 170	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution()  Line 430	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource * cachedResource=0x0efe0e00)  Line 475	C++
 	WebKit.dll!WebCore::CachedScript::checkNotify()  Line 104 + 0x13 bytes	C++
 	WebKit.dll!WebCore::CachedScript::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt; data={...}, bool allDataReceived=true)  Line 95	C++
 	WebKit.dll!WebCore::CachedResourceRequest::didFinishLoading(WebCore::SubresourceLoader * loader=0x0f118d58)  Line 160	C++
 	WebKit.dll!WebCore::SubresourceLoader::didFinishLoading(double finishTime=0.00000000000000000)  Line 181 + 0x1f bytes	C++
 	WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal=0x0d342ff0, double finishTime=0.00000000000000000)  Line 434 + 0x18 bytes	C++
 	WebKit.dll!WebCore::didFinishLoading(_CFURLConnection * conn=0x10c26fe0, const void * clientInfo=0x0d342ff0)  Line 241 + 0x26 bytes	C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339916</commentid>
    <comment_count>2</comment_count>
      <attachid>80118</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-01-25 14:09:10 -0800</bug_when>
    <thetext>Created attachment 80118
[PATCH] Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339994</commentid>
    <comment_count>3</comment_count>
      <attachid>80143</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-01-25 16:03:13 -0800</bug_when>
    <thetext>Created attachment 80143
[PATCH] Take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340066</commentid>
    <comment_count>4</comment_count>
      <attachid>80143</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-25 18:02:32 -0800</bug_when>
    <thetext>Comment on attachment 80143
[PATCH] Take 2

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:83
&gt; +    , m_loadDonePendingActionTimer(this, &amp;CachedResourceLoader::loadDonePendingActionTimerFired)

i would remove the word &quot;Pending&quot; from these names. It doesn&apos;t add much.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:532
&gt; +
&gt; +    if (request) {
&gt; +        checkForPendingPreloads();
&gt; +        resourceLoadScheduler()-&gt;servePendingRequests();
&gt; +    } else {
&gt; +        // If the request passed to this function is null, loadDone finished synchronously from when
&gt; +        // the load was started, so we want to kick off our next set of loads (via checkForPendingPreloads
&gt; +        // and servePendingRequests) asynchronously.
&gt; +        m_loadDonePendingActionTimer.startOneShot(0);
&gt; +    }

This would read better with early return and the usual case on the left:

if (!request) {
   ....
   m_loadDonePendingActionTimer.startOneShot(0)
   return;
}
...

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:540
&gt; +void CachedResourceLoader::loadDonePendingActionTimerFired(Timer&lt;CachedResourceLoader&gt;*)
&gt; +{
&gt;      checkForPendingPreloads();
&gt;      resourceLoadScheduler()-&gt;servePendingRequests();
&gt;  }

You could put these calls to a function (performPostLoadActions() or something) and call that from both loadDone() and here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340074</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-01-25 18:16:22 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 80143 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80143&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:83
&gt; &gt; +    , m_loadDonePendingActionTimer(this, &amp;CachedResourceLoader::loadDonePendingActionTimerFired)
&gt; 
&gt; i would remove the word &quot;Pending&quot; from these names. It doesn&apos;t add much.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:532
&gt; &gt; +
&gt; &gt; +    if (request) {
&gt; &gt; +        checkForPendingPreloads();
&gt; &gt; +        resourceLoadScheduler()-&gt;servePendingRequests();
&gt; &gt; +    } else {
&gt; &gt; +        // If the request passed to this function is null, loadDone finished synchronously from when
&gt; &gt; +        // the load was started, so we want to kick off our next set of loads (via checkForPendingPreloads
&gt; &gt; +        // and servePendingRequests) asynchronously.
&gt; &gt; +        m_loadDonePendingActionTimer.startOneShot(0);
&gt; &gt; +    }
&gt; 
&gt; This would read better with early return and the usual case on the left:
&gt; 
&gt; if (!request) {
&gt;    ....
&gt;    m_loadDonePendingActionTimer.startOneShot(0)
&gt;    return;
&gt; }
&gt; ...

Fixed.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:540
&gt; &gt; +void CachedResourceLoader::loadDonePendingActionTimerFired(Timer&lt;CachedResourceLoader&gt;*)
&gt; &gt; +{
&gt; &gt;      checkForPendingPreloads();
&gt; &gt;      resourceLoadScheduler()-&gt;servePendingRequests();
&gt; &gt;  }
&gt; 
&gt; You could put these calls to a function (performPostLoadActions() or something) and call that from both loadDone() and here.

Fixed.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340351</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-01-26 11:08:22 -0800</bug_when>
    <thetext>Landed in r76701.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340361</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-26 11:39:02 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76701 might have broken Qt Linux Release
The following tests are not passing:
fast/loader/willSendRequest-null-for-preload.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80118</attachid>
            <date>2011-01-25 14:09:10 -0800</date>
            <delta_ts>2011-01-25 16:03:13 -0800</delta_ts>
            <desc>[PATCH] Fix</desc>
            <filename>cancel_load_asserts.patch</filename>
            <type>text/plain</type>
            <size>9126</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NjM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDEtMjUgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoZXMgbG9hZGluZyBwYWdlcyB3aGVuIGNhbmNl
bGxpbmcgc3VicmVzb3VyY2UgbG9hZHMgdGhyb3VnaCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMTIzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84OTE0MzYxPgorICAgICAgICAKKyAgICAgICAgRml4IGNyYXNoZXMgdGhhdCBjb21lIHVw
IHdoZW4gY2FuY2VsbGluZyByZXNvdXJjZSBsb2FkcyBieSBjbGVhcmluZyB0aGUgCisgICAgICAg
IFJlc291cmNlUmVxdWVzdCBpbiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3QuCisgICAgICAgIAorICAgICAgICBUaGUgZmlyc3QgY3Jhc2ggd2FzIGEgc3RhY2sg
b3ZlcmZsb3cgZHVlIHRvIGluZmluaXRlIHJlY3Vyc2lvbiBpbiBjaGVja0ZvclBlbmRpbmdQcmVs
b2FkcywgCisgICAgICAgIHRoYXQgd2FzIGZpeGVkIGJ5IHN3aXRjaGluZyBtX3BlbmRpbmdQcmVs
b2FkcyB0byBiZSBhIERlcXVlIGluc3RlYWQgb2YgYSBWZWN0b3IuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGxlYWQgdG8gYW5vdGhlciBjcmFzaCB1bmRlciBDYWNoZWRSZXNvdXJjZTo6bG9hZCwg
d2hpY2ggd2FzIGZpeGVkIGJ5IHJlbW92aW5nIHRoZSAKKyAgICAgICAgZGVsZXRlIGNhbGwgaW4g
Q2FjaGVkUmVzb3VyY2U6OnNldFJlcXVlc3QuCisKKyAgICAgICAgVGVzdDogZmFzdC9sb2FkZXIv
d2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9yLXByZWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
ZXRSZXF1ZXN0KTogT25seSBkaXNwYXRjaCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSBpZiBvdXIgbmV3IFVSTCBpcyBub24tbnVsbC4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnNldFJlcXVlc3QpOiBSZW1vdmUgdGhlIGNhbGwgdG8gZGVsZXRlIHRoaXMu
IFdoZW4gdGhpcyBjb2RlIHBhdGggaXMgY2FsbGVkLCB0aGUgQ2FjaGVkUmVzb3VyY2UgaXMgaW4g
b3VyIAorICAgICAgICAgICAgY2FsbCBzdGFjaywgYW5kIG1lbWJlciB2YXJpYWJsZXMgZnJvbSBp
dCBhcmUgdXNlZCBsYXRlci4gVGhlIENhY2hlZFJlc291cmNlIGlzIGRlbGV0ZWQgaW4gYSBjYWxs
IHRvIGV2aWN0IGxhdGVyLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tG
b3JQZW5kaW5nUHJlbG9hZHMpOiBVc2UgRGVxdWUgbWV0aG9kcyB0byBvcGVyYXRlIG9uIG1fcGVu
ZGluZ1ByZWxvYWRzLAorICAgICAgICAgICAgdXNpbmcgaXNFbXB0eSB0byBjaGVjayBmb3Igc2l6
ZSwgYW5kIHRha2VGaXJzdCB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGUgRGVxdWUu
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6IFN3aXRjaCBt
X3BlbmRpbmdQcmVsb2FkcyBmcm9tIGEgVmVjdG9yIHRvIGEgRGVxdWUuCisKIDIwMTEtMDEtMjUg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIt
c3RhbXBlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCShyZXZpc2lvbiA3NjUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw5ICsxNjgsOSBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlCiAgICAgS1VSTCBvbGRVUkwgPSBt
X3JlcXVlc3QudXJsKCk7CiAgICAgbV9yZXF1ZXN0ID0gcmVxOwogCi0gICAgLy8gT25seSBzZW5k
IHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6IGlmIFVSTCBjaGFuZ2VkLgorICAgIC8vIE9ubHkgc2VuZCB3ZWJWaWV3OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBpZiBVUkwgY2hhbmdlZCAo
YW5kIGlzIG5vbi1udWxsKS4KICAgICAvLyBBbHNvLCBkb24ndCBzZW5kIGl0IHdoZW4gcmVwbGFj
aW5nIHVucmVhY2hhYmxlIFVSTHMgd2l0aCBhbHRlcm5hdGUgY29udGVudC4KLSAgICBpZiAoIWhh
bmRsaW5nVW5yZWFjaGFibGVVUkwgJiYgb2xkVVJMICE9IHJlcS51cmwoKSkKKyAgICBpZiAoIWhh
bmRsaW5nVW5yZWFjaGFibGVVUkwgJiYgIXJlcS51cmwoKS5pc051bGwoKSAmJiBvbGRVUkwgIT0g
cmVxLnVybCgpKQogICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDc2NTI5KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDggKzIzMCw2IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldFJlcXVl
c3QoQ2FjaGVkUmUKICAgICBpZiAocmVxdWVzdCAmJiAhbV9yZXF1ZXN0KQogICAgICAgICBtX3N0
YXR1cyA9IFBlbmRpbmc7CiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBpZiAoY2FuRGVs
ZXRlKCkgJiYgIWluQ2FjaGUoKSkKLSAgICAgICAgZGVsZXRlIHRoaXM7CiB9CiAKIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiA3NjUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MywxMSArNTgz
LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGUKIAogdm9pZCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tGb3JQZW5kaW5nUHJlbG9hZHMoKSAKIHsKLSAgICB1
bnNpZ25lZCBjb3VudCA9IG1fcGVuZGluZ1ByZWxvYWRzLnNpemUoKTsKLSAgICBpZiAoIWNvdW50
IHx8ICFtX2RvY3VtZW50LT5ib2R5KCkgfHwgIW1fZG9jdW1lbnQtPmJvZHkoKS0+cmVuZGVyZXIo
KSkKKyAgICBpZiAobV9wZW5kaW5nUHJlbG9hZHMuaXNFbXB0eSgpIHx8ICFtX2RvY3VtZW50LT5i
b2R5KCkgfHwgIW1fZG9jdW1lbnQtPmJvZHkoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFBl
bmRpbmdQcmVsb2FkJiBwcmVsb2FkID0gbV9wZW5kaW5nUHJlbG9hZHNbaV07CisgICAgd2hpbGUg
KCFtX3BlbmRpbmdQcmVsb2Fkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGVuZGluZ1ByZWxvYWQg
cHJlbG9hZCA9IG1fcGVuZGluZ1ByZWxvYWRzLnRha2VGaXJzdCgpOwogICAgICAgICAvLyBEb24n
dCByZXF1ZXN0IHByZWxvYWQgaWYgdGhlIHJlc291cmNlIGFscmVhZHkgbG9hZGVkIG5vcm1hbGx5
ICh0aGlzIHdpbGwgcmVzdWx0IGluIGRvdWJsZSBsb2FkIGlmIHRoZSBwYWdlIGlzIGJlaW5nIHJl
bG9hZGVkIHdpdGggY2FjaGVkIHJlc3VsdHMgaWdub3JlZCkuCiAgICAgICAgIGlmICghY2FjaGVk
UmVzb3VyY2UobV9kb2N1bWVudC0+Y29tcGxldGVVUkwocHJlbG9hZC5tX3VybCkpKQogICAgICAg
ICAgICAgcmVxdWVzdFByZWxvYWQocHJlbG9hZC5tX3R5cGUsIHByZWxvYWQubV91cmwsIHByZWxv
YWQubV9jaGFyc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA3NjUyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCisj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTMzLDcg
KzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5n
IG1fY2hhcnNldDsKICAgICB9OwotICAgIFZlY3RvcjxQZW5kaW5nUHJlbG9hZD4gbV9wZW5kaW5n
UHJlbG9hZHM7CisgICAgRGVxdWU8UGVuZGluZ1ByZWxvYWQ+IG1fcGVuZGluZ1ByZWxvYWRzOwog
ICAgIAogICAgIC8vMjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NjM4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMjUgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoZXMgbG9hZGluZyBwYWdlcyB3aGVuIGNhbmNl
bGxpbmcgc3VicmVzb3VyY2UgbG9hZHMgdGhyb3VnaCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMTIzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84OTE0MzYxPgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKTogSWYgb3VyIFVSTCBpcyBudWxs
LCByZXR1cm4gZWFybHkgaW5zdGVhZCBvZiBkaXNwYXRjaGluZworICAgICAgICAgICAgYSBtZXNz
YWdlLgorCiAyMDExLTAxLTI1ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA3NjUyOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOwogICAgIGNvbnN0IFN0cmluZyYgdXJsID0gcmVx
dWVzdC51cmwoKS5zdHJpbmcoKTsgLy8gRklYTUU6IFBhc3MgZW50aXJlIHJlcXVlc3QuCisgICAg
aWYgKCF1cmwpCisgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rp
b247CiAgICAgdWludDY0X3QgcG9saWN5QWN0aW9uOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzY2Mzgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMS0wMS0yNSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jhc2hlcyBs
b2FkaW5nIHBhZ2VzIHdoZW4gY2FuY2VsbGluZyBzdWJyZXNvdXJjZSBsb2FkcyB0aHJvdWdoIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMx
MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5MTQzNjE+CisgICAgICAgIAorICAgICAgICBB
ZGQgdGVzdHMgZm9yIGNyYXNoaW5nIHdoZW4gY2FuY2VsbGluZyBzdWJyZXNvdXJjZSBsb2FkcyB0
aHJvdWdoIFdlYktpdCB2aWEgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwuCisKKyAgICAg
ICAgKiBmYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9hZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVzdC1udWxs
LWZvci1wcmVsb2FkLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTI1ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByNzY2MjUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVl
c3QtbnVsbC1mb3ItcHJlbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9yLXByZWxvYWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1
ZXN0LW51bGwtZm9yLXByZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IK
K1Rlc3QgZm9yIEJ1ZyA1MzEyMzogQ3Jhc2hlcyBsb2FkaW5nIHBhZ2VzIHdoZW4gY2FuY2VsbGlu
ZyBzdWJyZXNvdXJjZSBsb2FkcyB0aHJvdWdoIFdlYktpdC4gSWYgdGhlIHRlc3QgZG9lc24ndCBj
cmFzaCwgdGhlbiBpdCBoYXMgcGFzc2VkLiBJdCBtdXN0IGJlIHJ1biBpbiBEUlQuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9hZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVz
dC1udWxsLWZvci1wcmVsb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9hZC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4NCis8aHRtbD4NCis8aGVhZD4NCisg
ICAgPHRpdGxlPkluZmluaXRlIFJlcXVlc3QgUHJlbG9hZCBsb29wPC90aXRsZT4NCisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSI+
PC9zY3JpcHQ+DQorICAgIDxzY3JpcHQ+DQorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7DQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOw0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsKHRydWUpOw0KKyAgICAgICAgfQ0KKyAgICA8L3NjcmlwdD4NCis8L2hlYWQ+
DQorPGJvZHk+DQorICAgIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MzEyMyI+QnVnIDUzMTIzOiBDcmFzaGVzIGxvYWRpbmcgcGFn
ZXMgd2hlbiBjYW5jZWxsaW5nIHN1YnJlc291cmNlIGxvYWRzIHRocm91Z2ggV2ViS2l0PC9hPi4N
CisgICAgSWYgdGhlIHRlc3QgZG9lc24ndCBjcmFzaCwgdGhlbiBpdCBoYXMgcGFzc2VkLiBJdCBt
dXN0IGJlIHJ1biBpbiBEUlQuPC9wPg0KKyAgICA8c2NyaXB0IHNyYz0iaHR0cDovL3d3dy5leGFt
cGxlLm9yZyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCis8L2JvZHk+DQorPC9o
dG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80143</attachid>
            <date>2011-01-25 16:03:13 -0800</date>
            <delta_ts>2011-01-25 18:02:31 -0800</delta_ts>
            <desc>[PATCH] Take 2</desc>
            <filename>cancel_load_asserts.patch</filename>
            <type>text/plain</type>
            <size>10540</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NjQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDEtMjUgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoZXMgbG9hZGluZyBwYWdlcyB3aGVuIGNhbmNl
bGxpbmcgc3VicmVzb3VyY2UgbG9hZHMgdGhyb3VnaCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMTIzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84OTE0MzYxPgorICAgICAgICAKKyAgICAgICAgRml4IGEgY3Jhc2ggdGhhdCBoYXBwZW5l
ZCB3aGVuIGNhbmNlbGxpbmcgc3VicmVzb3VyY2UgbG9hZHMgdGhyb3VnaCBXZWJLaXQuCisgICAg
ICAgIAorICAgICAgICBXaGVuIGEgbG9hZCBpcyBjYW5jZWxsZWQgc3luY2hyb25vdXNseSAodmlh
IHRoZSBXZWJLaXQgY2xpZW50KSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZSAKKyAgICAgICAgY2FuIGJlIGNhbGxlZCByZWN1cnNpdmVseSBvbiB0aGUgc2FtZSBmdW5jdGlv
biwgZWl0aGVyIGxlYWRpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLCBvciBkZWxldGluZyAKKyAg
ICAgICAgYW4gb2JqZWN0IHdoZW4gaXQgaXMgbm90IGRvbmUgYmVpbmcgdXNlZC4KKyAgICAgICAg
CisgICAgICAgIFRoZSBmaXggZm9yIHRoaXMgd2FzIHRvIGNhbGwgY2hlY2tGb3JQZW5kaW5nUHJl
bG9hZHMgYW5kIHNlcnZlUGVuZGluZ1JlcXVlc3RzIGFzeW5jaHJvbm91c2x5IHdoZW4gCisgICAg
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZSB3YXMgY2FsbGVkIHN5bmNocm9ub3Vz
bHkgKGR1ZSB0byB0aGUgbG9hZCBiZWluZyBjYW5jZWxsZWQgc3luY2hyb25vdXNseSkuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9yLXByZWxvYWQu
aHRtbAorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0KTogT25seSBkaXNwYXRjaCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSAKKyAgICAgICAgICAg
IGlmIG91ciBuZXcgVVJMIGlzIG5vbi1udWxsLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOiBJbml0aWFsaXplIG91ciB0aW1lci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZSk6IElmIHRoZSBDYWNo
ZWRSZXNvdXJjZSB3ZSB3ZXJlIHBhc3NlZCBpbiB3YXMgMCwgdGhhdCBtZWFucyB0aGlzIAorICAg
ICAgICAgICAgZnVuY3Rpb24gd2FzIGNhbGxlZCBzeW5jaHJvbm91c2x5CisgICAgICAgICAgICBm
cm9tIENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9hZCwgYW5kIHdlIGRvbid0IHdhbnQgdG8gY2Fs
bCBpbnRvIGNoZWNrRm9yUGVuZGluZ1ByZWxvYWRzIHN5bmNocm9ub3VzbHksIAorICAgICAgICAg
ICAgc28gcHV0IGl0IG9uIGEgMC1kZWxheSB0aW1lciB0byBtYWtlIHRoZSBjYWxscyB0byBjaGVj
a0ZvclBlbmRpbmdQcmVsb2FkcyBhbmQgc2VydmVQZW5kaW5nUmVxdWVzdHMgYXN5bmNocm9ub3Vz
LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lUGVuZGlu
Z0FjdGlvblRpbWVyRmlyZWQpOiBDYWxsIGNoZWNrRm9yUGVuZGluZ1ByZWxvYWRzIGFuZCBzZXJ2
ZVBlbmRpbmdSZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpjaGVja0ZvclBlbmRpbmdQcmVsb2Fkcyk6IG1fcGVuZGluZ1ByZWxvYWRzIGlzIG5vdyBhIERl
cXVlIGluc3RlYWQgb2YgYSBWZWN0b3IsIAorICAgICAgICAgICAgc28gdXNlIERlcXVlIG1ldGhv
ZHMuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6IEFkZCB0
aGUgdGltZXIsIHRoZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiwgYW5kIG1ha2UgbV9wZW5kaW5n
UHJlbG9hZHMgYSBEZXF1ZS4KKwogMjAxMS0wMS0yMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDc2NTI5KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3Qg
UmUKICAgICBLVVJMIG9sZFVSTCA9IG1fcmVxdWVzdC51cmwoKTsKICAgICBtX3JlcXVlc3QgPSBy
ZXE7CiAKLSAgICAvLyBPbmx5IHNlbmQgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogaWYgVVJMIGNoYW5nZWQuCisgICAgLy8gT25seSBz
ZW5kIHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IGlmIFVSTCBjaGFuZ2VkIChhbmQgaXMgbm9uLW51bGwpLgogICAgIC8vIEFsc28sIGRv
bid0IHNlbmQgaXQgd2hlbiByZXBsYWNpbmcgdW5yZWFjaGFibGUgVVJMcyB3aXRoIGFsdGVybmF0
ZSBjb250ZW50LgotICAgIGlmICghaGFuZGxpbmdVbnJlYWNoYWJsZVVSTCAmJiBvbGRVUkwgIT0g
cmVxLnVybCgpKQorICAgIGlmICghaGFuZGxpbmdVbnJlYWNoYWJsZVVSTCAmJiAhcmVxLnVybCgp
LmlzTnVsbCgpICYmIG9sZFVSTCAhPSByZXEudXJsKCkpCiAgICAgICAgIGZyYW1lTG9hZGVyKCkt
PmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gNzY1MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2
ICs4MCw3IEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKKyAg
ICAsIG1fbG9hZERvbmVQZW5kaW5nQWN0aW9uVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpsb2FkRG9uZVBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKQogICAgICwgbV9hdXRvTG9hZElt
YWdlcyh0cnVlKQogICAgICwgbV9sb2FkRmluaXNoaW5nKGZhbHNlKQogICAgICwgbV9hbGxvd1N0
YWxlUmVzb3VyY2VzKGZhbHNlKQpAQCAtNTE5LDYgKzUyMCwyMSBAQCB2b2lkIENhY2hlZFJlc291
cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoCiAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKHJlcXVl
c3QpOwogICAgIGlmIChmcmFtZSgpKQogICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS0+bG9hZERv
bmUoKTsKKworICAgIGlmIChyZXF1ZXN0KSB7CisgICAgICAgIGNoZWNrRm9yUGVuZGluZ1ByZWxv
YWRzKCk7CisgICAgICAgIHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zZXJ2ZVBlbmRpbmdSZXF1
ZXN0cygpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHBhc3NlZCB0
byB0aGlzIGZ1bmN0aW9uIGlzIG51bGwsIGxvYWREb25lIGZpbmlzaGVkIHN5bmNocm9ub3VzbHkg
ZnJvbSB3aGVuCisgICAgICAgIC8vIHRoZSBsb2FkIHdhcyBzdGFydGVkLCBzbyB3ZSB3YW50IHRv
IGtpY2sgb2ZmIG91ciBuZXh0IHNldCBvZiBsb2FkcyAodmlhIGNoZWNrRm9yUGVuZGluZ1ByZWxv
YWRzCisgICAgICAgIC8vIGFuZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cykgYXN5bmNocm9ub3VzbHku
CisgICAgICAgIG1fbG9hZERvbmVQZW5kaW5nQWN0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwor
ICAgIH0KKworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZVBlbmRpbmdB
Y3Rpb25UaW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopCit7CiAgICAgY2hl
Y2tGb3JQZW5kaW5nUHJlbG9hZHMoKTsKICAgICByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2Vy
dmVQZW5kaW5nUmVxdWVzdHMoKTsKIH0KQEAgLTU4MywxMSArNTk5LDEwIEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGUKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2hlY2tGb3JQZW5kaW5nUHJlbG9hZHMoKSAKIHsKLSAgICB1bnNpZ25lZCBjb3VudCA9IG1f
cGVuZGluZ1ByZWxvYWRzLnNpemUoKTsKLSAgICBpZiAoIWNvdW50IHx8ICFtX2RvY3VtZW50LT5i
b2R5KCkgfHwgIW1fZG9jdW1lbnQtPmJvZHkoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAobV9wZW5k
aW5nUHJlbG9hZHMuaXNFbXB0eSgpIHx8ICFtX2RvY3VtZW50LT5ib2R5KCkgfHwgIW1fZG9jdW1l
bnQtPmJvZHkoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFBlbmRpbmdQcmVsb2FkJiBwcmVs
b2FkID0gbV9wZW5kaW5nUHJlbG9hZHNbaV07CisgICAgd2hpbGUgKCFtX3BlbmRpbmdQcmVsb2Fk
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGVuZGluZ1ByZWxvYWQgcHJlbG9hZCA9IG1fcGVuZGlu
Z1ByZWxvYWRzLnRha2VGaXJzdCgpOwogICAgICAgICAvLyBEb24ndCByZXF1ZXN0IHByZWxvYWQg
aWYgdGhlIHJlc291cmNlIGFscmVhZHkgbG9hZGVkIG5vcm1hbGx5ICh0aGlzIHdpbGwgcmVzdWx0
IGluIGRvdWJsZSBsb2FkIGlmIHRoZSBwYWdlIGlzIGJlaW5nIHJlbG9hZGVkIHdpdGggY2FjaGVk
IHJlc3VsdHMgaWdub3JlZCkuCiAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UobV9kb2N1bWVu
dC0+Y29tcGxldGVVUkwocHJlbG9hZC5tX3VybCkpKQogICAgICAgICAgICAgcmVxdWVzdFByZWxv
YWQocHJlbG9hZC5tX3R5cGUsIHByZWxvYWQubV91cmwsIHByZWxvYWQubV9jaGFyc2V0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiA3NjUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0xMTcs
NiArMTE5LDggQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIG5vdGlmeUxvYWRlZEZyb21NZW1v
cnlDYWNoZShDYWNoZWRSZXNvdXJjZSopOwogICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgY29uc3QgS1VSTCYpOworCisgICAgdm9pZCBsb2FkRG9uZVBlbmRpbmdBY3Rp
b25UaW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIAogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291
cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CkBAIC0xMzMsNyArMTM3LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV9jaGFyc2V0OwogICAgIH07
Ci0gICAgVmVjdG9yPFBlbmRpbmdQcmVsb2FkPiBtX3BlbmRpbmdQcmVsb2FkczsKKyAgICBEZXF1
ZTxQZW5kaW5nUHJlbG9hZD4gbV9wZW5kaW5nUHJlbG9hZHM7CisKKyAgICBUaW1lcjxDYWNoZWRS
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkRG9uZVBlbmRpbmdBY3Rpb25UaW1lcjsKICAgICAKICAgICAv
LzI5IGJpdHMgbGVmdAogICAgIGJvb2wgbV9hdXRvTG9hZEltYWdlcyA6IDE7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3NjYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAxLTI1ICBCcmlhbiBXZWluc3RlaW4gIDxi
d2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDcmFzaGVzIGxvYWRpbmcgcGFnZXMgd2hlbiBjYW5jZWxsaW5nIHN1YnJl
c291cmNlIGxvYWRzIHRocm91Z2ggV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MzEyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODkxNDM2
MT4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6IElmIG91ciBVUkwgaXMgbnVsbCwgcmV0dXJuIGVh
cmx5IGluc3RlYWQgb2YgZGlzcGF0Y2hpbmcKKyAgICAgICAgICAgIGEgbWVzc2FnZS4KKwogMjAx
MS0wMS0yNSAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJ1YmJlci1zdGFtcGVkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNzY1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjA5LDYgKzYwOSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWQKIAogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyKGZ1bmN0aW9uKTsKICAgICBjb25zdCBTdHJpbmcmIHVybCA9IHJlcXVlc3QudXJsKCku
c3RyaW5nKCk7IC8vIEZJWE1FOiBQYXNzIGVudGlyZSByZXF1ZXN0LgorICAgIGlmICghdXJsKQor
ICAgICAgICByZXR1cm47CiAKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAgIHVp
bnQ2NF90IHBvbGljeUFjdGlvbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NjM4KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEt
MjUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoZXMgbG9hZGluZyBwYWdl
cyB3aGVuIGNhbmNlbGxpbmcgc3VicmVzb3VyY2UgbG9hZHMgdGhyb3VnaCBXZWJLaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMTIzCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84OTE0MzYxPgorICAgICAgICAKKyAgICAgICAgQWRkIHRlc3RzIGZv
ciBjcmFzaGluZyB3aGVuIGNhbmNlbGxpbmcgc3VicmVzb3VyY2UgbG9hZHMgdGhyb3VnaCBXZWJL
aXQgdmlhIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsLgorCisgICAgICAgICogZmFzdC9s
b2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9yLXByZWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9h
ZC5odG1sOiBBZGRlZC4KKwogMjAxMS0wMS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc2NjI1
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9y
LXByZWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3dpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1wcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVzdC1udWxsLWZv
ci1wcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTogU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yCitUZXN0IGZvciBC
dWcgNTMxMjM6IENyYXNoZXMgbG9hZGluZyBwYWdlcyB3aGVuIGNhbmNlbGxpbmcgc3VicmVzb3Vy
Y2UgbG9hZHMgdGhyb3VnaCBXZWJLaXQuIElmIHRoZSB0ZXN0IGRvZXNuJ3QgY3Jhc2gsIHRoZW4g
aXQgaGFzIHBhc3NlZC4gSXQgbXVzdCBiZSBydW4gaW4gRFJULgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwtZm9yLXByZWxvYWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3It
cHJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2ls
bFNlbmRSZXF1ZXN0LW51bGwtZm9yLXByZWxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOCBAQAorPCFET0NUWVBFIGh0bWw+DQorPGh0bWw+DQorPGhlYWQ+DQorICAgIDx0aXRsZT5J
bmZpbml0ZSBSZXF1ZXN0IFByZWxvYWQgbG9vcDwvdGl0bGU+DQorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iPjwvc2NyaXB0Pg0K
KyAgICA8c2NyaXB0Pg0KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ew0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVs
bCh0cnVlKTsNCisgICAgICAgIH0NCisgICAgPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0K
KyAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTMxMjMiPkJ1ZyA1MzEyMzogQ3Jhc2hlcyBsb2FkaW5nIHBhZ2VzIHdoZW4gY2Fu
Y2VsbGluZyBzdWJyZXNvdXJjZSBsb2FkcyB0aHJvdWdoIFdlYktpdDwvYT4uDQorICAgIElmIHRo
ZSB0ZXN0IGRvZXNuJ3QgY3Jhc2gsIHRoZW4gaXQgaGFzIHBhc3NlZC4gSXQgbXVzdCBiZSBydW4g
aW4gRFJULjwvcD4NCisgICAgPHNjcmlwdCBzcmM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmciIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+DQorPC9ib2R5Pg0KKzwvaHRtbD4NCg==
</data>
<flag name="review"
          id="71603"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>