<?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>63483</bug_id>
          
          <creation_ts>2011-06-27 14:42:23 -0700</creation_ts>
          <short_desc>[WebKit2] Crash loading page that adds/removes frame in DOMContentLoaded/loaded</short_desc>
          <delta_ts>2011-06-29 13:46:53 -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>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>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>428324</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 14:42:23 -0700</bug_when>
    <thetext>When looking for a way to reproduce one of the most-reported crashes from the field, a crash in DocumentWriter::end &lt;rdar://problem/9598940&gt;, we got a pointer to this page: &lt;http://www.sniqueaway.com/events/#none&gt;.

Testing with the page and looking at the crash I was sometimes able to reproduce, I was able to produce a test page that demonstrates the problem. Now, I would like to know:

    1) Is this a regression? If so, which change caused it?
    2) How can we fix it.

Diagnosing this crash I have seen multiple crazy things going on in the loader. I just can’t decide which to treat as the proximate cause of the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428325</commentid>
    <comment_count>1</comment_count>
      <attachid>98788</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 14:42:41 -0700</bug_when>
    <thetext>Created attachment 98788
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428329</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 14:49:47 -0700</bug_when>
    <thetext>Here are two problems I can see:

    1) When initializing the empty document for the new frame, we end up calling begin twice, and so we end up doing clear. This second clear ends up triggering a load event for the parent frame at a bad time. The first clear doesn’t do any work because of the m_needsClear optimization.

    2) When sending a DOMContentLoaded event, it’s not good that a loaded event might get sent during the processing. The loaded event should only be sent after DOMContentLoaded has been dispatched. Something in the code should enforce this rule. At the moment, if a subframe finishes loaded during DOMContentLoaded handling then the load event will fire. Even if we fix (1) I can imagine this happening if we do something like showModalDialog in a DOMContentLoaded handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428352</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-27 15:03:46 -0700</bug_when>
    <thetext>I&apos;m wondering what should happen if stop() is called in a DOMContentLoaded handler. In Safari 5, I see two DOMContentLoaded events, followed by a load event. In ToT, there is only a DOMContentLoaded, and no load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428353</commentid>
    <comment_count>4</comment_count>
      <attachid>98797</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 15:06:06 -0700</bug_when>
    <thetext>Created attachment 98797
Improved test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428354</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 15:07:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m wondering what should happen if stop() is called in a DOMContentLoaded handler. In Safari 5, I see two DOMContentLoaded events, followed by a load event. In ToT, there is only a DOMContentLoaded, and no load.

What is stop()? Is it a function that JavaScript could call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428358</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 15:07:56 -0700</bug_when>
    <thetext>&gt; What is stop()? Is it a function that JavaScript could call?

There&apos;s a window.stop(), if that&apos;s what Alexey means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428448</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 16:55:06 -0700</bug_when>
    <thetext>Looks like this crash is WebKit2-specific.

The problem seems to be in WebFrameLoaderClient::finishedLoading, which calls WebFrameLoaderClient::committedLoad. Non-WebKit2 platforms don’t do anything like that. That results in the document being created. This means that in WebKit2 we end up calling DocumentWriter::begin twice and create the document twice.

I am not sure what the right way to fix this is.

My test case shows that the out-of-order delivery of DOMContentLoaded and loaded is not WebKit2-specific, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428449</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 16:55:43 -0700</bug_when>
    <thetext>My guess is that this is not a regression, and has always been true in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428514</commentid>
    <comment_count>9</comment_count>
      <attachid>98832</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 17:56:21 -0700</bug_when>
    <thetext>Created attachment 98832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428517</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 17:57:57 -0700</bug_when>
    <thetext>My idea of how to move forward on this is as follows:

1) Discuss with at least one other engineer whether to fix this in WebKit2 code or land this WebCore change. Act on that decision.

2) Make a patch that includes the test case and the fix. The test case will still show the out-of-order event problem, but will demonstrate that the crash is gone.

3) After landing that patch, file a new bug about the out-of-order event problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428519</commentid>
    <comment_count>11</comment_count>
      <attachid>98832</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:59:11 -0700</bug_when>
    <thetext>Comment on attachment 98832
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:230
&gt; +    if (!m_frame-&gt;document()) {

You should be able to use the m_stateMachine to make this decision rather than looking at m_frame-&gt;document().  Using the state machine might be slightly better, but we should add ASSERTs to cross-check in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428521</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 18:00:09 -0700</bug_when>
    <thetext>I haven&apos;t looking into this deeply enough to have an opinion about whether this should be fixed in WebCore or WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428528</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 18:07:22 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98832&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:230
&gt; &gt; +    if (!m_frame-&gt;document()) {
&gt; 
&gt; You should be able to use the m_stateMachine to make this decision rather than looking at m_frame-&gt;document(). Using the state machine might be slightly better, but we should add ASSERTs to cross-check in any case.

OK. What I liked about checking document for 0 is that the goal of begin/end is to create the document, so it seemed natural to run it only if there was no document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428533</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 18:11:01 -0700</bug_when>
    <thetext>&gt; OK. What I liked about checking document for 0 is that the goal of begin/end is to create the document, so it seemed natural to run it only if there was no document.

That&apos;s fine, but then you should ASSERT that the state machine is in the correct state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429164</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 14:54:20 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; OK. What I liked about checking document for 0 is that the goal of begin/end is to create the document, so it seemed natural to run it only if there was no document.
&gt; 
&gt; That&apos;s fine, but then you should ASSERT that the state machine is in the correct state.

What state are you expecting in the two cases? It&apos;s unclear to me what would have changed the state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429186</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 15:24:08 -0700</bug_when>
    <thetext>&gt; What state are you expecting in the two cases? It&apos;s unclear to me what would have changed the state.

The main question is whether the document that current exists in the frame is the initial document, which case we should be in the FrameLoaderStateMachine::DisplayingInitialEmptyDocument state.  If it&apos;s a real document, I would expect to be either in the CommittedFirstRealLoad or the FirstLayoutDone state.

If it&apos;s a real document, then it&apos;s dangerous to execute this line of code:

m_stateMachine.advanceTo(FrameLoaderStateMachine::DisplayingInitialEmptyDocument);

because that would be going backwards in the state machine and being confused about whether we&apos;ve got a initial document or a real document will screw up the back/forward list and (possibly) some security checks.

Long story short, I hope we&apos;re in the DisplayingInitialEmptyDocument state if we&apos;ve got a non-null document at this program point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429190</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 15:26:39 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Long story short, I hope we&apos;re in the DisplayingInitialEmptyDocument state if we&apos;ve got a non-null document at this program point.

This is the function that sets the state to DisplayingInitialEmptyDocument, so we won’t yet be in that state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429248</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 16:31:32 -0700</bug_when>
    <thetext>&gt; This is the function that sets the state to DisplayingInitialEmptyDocument, so we won’t yet be in that state.

Maybe I&apos;m confused about where this document is coming from then.  Are we not re-entering this function?  If we&apos;re getting a real document before the initial document, that&apos;s going to break a lot of invariants and we should fix this in the WebKit2 layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429298</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 17:37:09 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Maybe I&apos;m confused about where this document is coming from then. Are we not re-entering this function? If we&apos;re getting a real document before the initial document, that&apos;s going to break a lot of invariants and we should fix this in the WebKit2 layer.

It’s not from reentering this function. I can’t remember exactly how it’s getting created. I seem to recall it was a pretty normal code path for loading data, and seemed more natural than making an explicit begin/end call, but you may be right that it does some other unwanted work in some way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429307</commentid>
    <comment_count>20</comment_count>
      <attachid>99012</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 17:49:28 -0700</bug_when>
    <thetext>Created attachment 99012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429311</commentid>
    <comment_count>21</comment_count>
      <attachid>99012</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 17:56:33 -0700</bug_when>
    <thetext>Comment on attachment 99012
Patch

It seems from this discussion that this patch isn&apos;t correct.  If there&apos;s a non-initial document in the frame, then we surely don&apos;t want to execute line 233/238, which will get the state machine out of sync with what&apos;s actually going on in the Frame.

However, if your patch works in Debug, then something very strange is going on because line 233/238 ASSERTs that we&apos;re doing a valid state transition, which means we must be in the CreatingInitialEmptyDocument state.  However, that doesn&apos;t make any sense.  Something is going wrong more deeply than this patch suggests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429318</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 17:58:40 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; If there&apos;s a non-initial document in the frame

There is an empty document in the frame. I don’t know why you call it non-initial.

&gt; However, if your patch works in Debug, then something very strange is going on because line 233/238 ASSERTs that we&apos;re doing a valid state transition, which means we must be in the CreatingInitialEmptyDocument state.

Yes, we haven’t moved on to another state.

&gt; Something is going wrong more deeply than this patch suggests.

OK.

But keep in mind that this something that is going wrong has been going wrong already without the patch. The patch certainly isn’t making it worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429323</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 18:01:40 -0700</bug_when>
    <thetext>And yes, the patch works fine in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429329</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 18:06:59 -0700</bug_when>
    <thetext>&gt; &gt; If there&apos;s a non-initial document in the frame
&gt; 
&gt; There is an empty document in the frame. I don’t know why you call it non-initial.

The &quot;initial document&quot; is a special document we create in FrameLoader::init so that Frame::document() is always non-null.  There a bunch of dancing we do to make that document mostly invisible, e.g., to the history system.

Given that we&apos;re not creating a document in FrameLoader::init (and that we&apos;re not re-entering FrameLoader::init), this document shouldn&apos;t be there.  If we&apos;re in the initial document state, we&apos;ll apply all the initial document hiding magic to this document, which likely isn&apos;t what we want.

Maybe the message from the WebProcess to load a document in the Frame should be buffered until the Frame has finished initializing?  Loading a real document into a partially initialized Frame sounds like a bad idea.

&gt; But keep in mind that this something that is going wrong has been going wrong already without the patch. The patch certainly isn’t making it worse.

I&apos;m starting to suspect that the final patch with ASSERT that document() is null immediately before calling begin() here (instead of having the branch that you&apos;ve added).  In that sense, the patch appears to be going in the wrong direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429331</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 18:08:57 -0700</bug_when>
    <thetext>&gt; The problem seems to be in WebFrameLoaderClient::finishedLoading, which calls WebFrameLoaderClient::committedLoad. Non-WebKit2 platforms don’t do anything like that.

Why is WebFrameLoaderClient::finishedLoading calling WebFrameLoaderClient::committedLoad ?  That doesn&apos;t seem to make much sense.  Usually when navigating a Frame, we commit to a load and then sometime later the load finishes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429332</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 18:10:50 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; &gt; If there&apos;s a non-initial document in the frame
&gt; &gt; 
&gt; &gt; There is an empty document in the frame. I don’t know why you call it non-initial.
&gt; 
&gt; The &quot;initial document&quot; is a special document we create in FrameLoader::init so that Frame::document() is always non-null.  There a bunch of dancing we do to make that document mostly invisible, e.g., to the history system.

I understand your concern, but the document that is created is indeed still invisible to the history system.

Given your theory that something is going wrong I should be able to find a concrete problem. Since I can’t, I suspect your preference to do this differently is more a matter of taste than anything else. Regardless, though, I’m willing to do it.

&gt; Maybe the message from the WebProcess to load a document in the Frame should be buffered until the Frame has finished initializing?

There is no message from the web process involved here. It’s all inside the web process.

&gt; Loading a real document into a partially initialized Frame sounds like a bad idea.

That&apos;s a straw man. We are not doing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429334</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 18:11:23 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Why is WebFrameLoaderClient::finishedLoading calling WebFrameLoaderClient::committedLoad ? That doesn&apos;t seem to make much sense. Usually when navigating a Frame, we commit to a load and then sometime later the load finishes.

I’ll have to ask Anders that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429344</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 18:17:37 -0700</bug_when>
    <thetext>As an example, here are a couple places where we do something different depending on whether we&apos;re displaying the initial document:

http://trac.webkit.org/browser/trunk/Source/WebCore/loader/FrameLoader.cpp#L396
http://trac.webkit.org/browser/trunk/Source/WebCore/loader/DocumentWriter.cpp#L126

There&apos;s a risk that if that piece of state is incorrect, we&apos;ll end up not clearing out some JavaScript state during navigation that we should, which might lead to a security problem.  There are a bunch of preconditions to that happening, but it&apos;s one reason why this state is somewhat sensitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429366</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 19:02:54 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; There&apos;s a risk that if that piece of state is incorrect, we&apos;ll end up not clearing out some JavaScript state during navigation that we should, which might lead to a security problem. There are a bunch of preconditions to that happening, but it&apos;s one reason why this state is somewhat sensitive.

I am having trouble understanding what this concern is in concrete terms. Those call sites check isDisplayingInitialEmptyDocument, and that state is true in the WebKit2 code path in question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429397</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 20:30:35 -0700</bug_when>
    <thetext>&gt; I am having trouble understanding what this concern is in concrete terms. Those call sites check isDisplayingInitialEmptyDocument, and that state is true in the WebKit2 code path in question.

Correct.  When isDisplayingInitialEmptyDocument, we intentionally leak some JavaScript objects from document to another.  In general, leaking JavaScript objects between objects isn&apos;t safe.  It&apos;s only safe (and needed for web compat) in the specific case of the initial document.  In this code path, there&apos;s some other document (i.e., not created by Frame::init) that&apos;s playing the role of the initial document.  The consequences of that are unknown and potentially dangerous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429621</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 08:30:51 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; &gt; I am having trouble understanding what this concern is in concrete terms. Those call sites check isDisplayingInitialEmptyDocument, and that state is true in the WebKit2 code path in question.
&gt; 
&gt; Correct.  When isDisplayingInitialEmptyDocument, we intentionally leak some JavaScript objects from document to another.  In general, leaking JavaScript objects between objects isn&apos;t safe.  It&apos;s only safe (and needed for web compat) in the specific case of the initial document.

This *is* the initial document.

&gt; In this code path, there&apos;s some other document (i.e., not created by Frame::init) that&apos;s playing the role of the initial document. The consequences of that are unknown and potentially dangerous.

Hard to argue with the fact that “consequences are unknown”, but I think it borders on FUD. This other document *is* created by Frame::init, just in a slightly different code path, and not by the begin call inside FrameLoader::init.

But, anyway, this debate is getting us nowhere. I will propose another fix. I haven’t yet because I haven’t had any time at a computer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429730</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 11:06:50 -0700</bug_when>
    <thetext>I found the reason that this behavior is different on various platforms. It&apos;s this code in FrameLoader::finishedLoadingDocument:

    // FIXME: Platforms shouldn&apos;t differ here!
#if PLATFORM(WIN) || PLATFORM(CHROMIUM)
    if (m_stateMachine.creatingInitialEmptyDocument())
        return;
#endif

To fit in with the other platforms, WebKit2 needs this early return. WebKit1 on Mac does not need the early return, but the reason why it does not is that the finishedLoading function eventually encounters a null pointer and so ends up doing nothing.

Most other platforms have patterned their finishedLoading functions after the one from Windows, yet are not included in this #if. It seems likely that some of them suffer from the same problem as Mac WebKit2.

It’s easy to fix this for any given platform by adding it to this white list. That means that I can fix this for Mac/WK2 by adding PLATFORM(MAC) to the list. That leaves elf, gtk, haiku, qt, wince, and wx.

I think this “Windows/Chromium” code path eventually should be on for all platforms. I’m thinking we could make it a black list instead of a white list and remove platforms one at a time as they are tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429731</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 11:08:56 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; The problem seems to be in WebFrameLoaderClient::finishedLoading, which calls WebFrameLoaderClient::committedLoad. Non-WebKit2 platforms don’t do anything like that.
&gt; 
&gt; Why is WebFrameLoaderClient::finishedLoading calling WebFrameLoaderClient::committedLoad? That doesn&apos;t seem to make much sense. Usually when navigating a Frame, we commit to a load and then sometime later the load finishes.

Two comments:

1) This function call is the same in the Windows port, not specific to WebKit2, so probably the same in most WebKit client implementations.

2) The finishedLoading function calls the committedLoad to share code. It’s not saying that we committed the load, but rather that when finish loading we need to do all the same things we did when committed the load. It’s possible that there is some extra work here we could eliminate. But cleaning that up seems outside the scope of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429734</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 11:12:09 -0700</bug_when>
    <thetext>Switching to a blacklist sounds like a good idea.  That stanza has always been super mysterious to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429740</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 11:24:35 -0700</bug_when>
    <thetext>On reflection, I don’t think we really need a blacklist. There is no evidence that this is helpful on any platform, so I will instead remove the #if entirely. We’ll have to test, but we’d have to test in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429803</commentid>
    <comment_count>36</comment_count>
      <attachid>99130</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 12:52:19 -0700</bug_when>
    <thetext>Created attachment 99130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429806</commentid>
    <comment_count>37</comment_count>
      <attachid>99131</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 12:58:58 -0700</bug_when>
    <thetext>Created attachment 99131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429825</commentid>
    <comment_count>38</comment_count>
      <attachid>99131</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 13:30:51 -0700</bug_when>
    <thetext>Comment on attachment 99131
Patch

Thanks for iterating on this patch.  The final version came out very well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429827</commentid>
    <comment_count>39</comment_count>
      <attachid>99131</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-06-29 13:33:50 -0700</bug_when>
    <thetext>Comment on attachment 99131
Patch

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

&gt; LayoutTests/fast/loader/create-frame-in-DOMContentLoaded-expected.txt:5
&gt; +A) Entered DOMContentLoaded event handler function.
&gt; +C) Entered load event handler function.
&gt; +D) Exiting load event handler function.
&gt; +Test passed if messages A, B, C, D were all in order and there was no crash.
&gt; +B) Exiting DOMContentLoaded event handler function.

This may be correct but based on the wording it doesn&apos;t sounds correct. The
results show &quot;A, C, D, B&quot; not &quot;A, B, C, D&quot;. Was this expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429831</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-29 13:42:22 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 99131 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99131&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/loader/create-frame-in-DOMContentLoaded-expected.txt:5
&gt; &gt; +A) Entered DOMContentLoaded event handler function.
&gt; &gt; +C) Entered load event handler function.
&gt; &gt; +D) Exiting load event handler function.
&gt; &gt; +Test passed if messages A, B, C, D were all in order and there was no crash.
&gt; &gt; +B) Exiting DOMContentLoaded event handler function.
&gt; 
&gt; This may be correct but based on the wording it doesn&apos;t sounds correct. The
&gt; results show &quot;A, C, D, B&quot; not &quot;A, B, C, D&quot;. Was this expected?

Yes, this test shows an expected failure, not the crash, but another bug. I’ll be filing a new bug report about that failure when I land this patch.

I mentioned this in comment #10 above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429840</commentid>
    <comment_count>41</comment_count>
      <attachid>99131</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-29 13:46:46 -0700</bug_when>
    <thetext>Comment on attachment 99131
Patch

Clearing flags on attachment: 99131

Committed r90038: &lt;http://trac.webkit.org/changeset/90038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429841</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-29 13:46:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>98788</attachid>
            <date>2011-06-27 14:42:41 -0700</date>
            <delta_ts>2011-06-27 15:06:06 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>create-frame-in-DOMContentLoaded.html</filename>
            <type>text/html</type>
            <size>515</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PGhlYWQ+CjxzY3JpcHQ+CnZhciBmcmFtZTsKZnVuY3Rpb24gaGFuZGxlTG9hZEV2ZW50KCkKewog
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmcmFtZSk7CiAgICBkb2N1bWVudC5ib2R5LmZp
cnN0Q2hpbGQudGV4dENvbnRlbnQgPSAiVEVTVCBQQVNTRUQiOwp9CmZ1bmN0aW9uIGhhbmRsZURP
TUNvbnRlbnRMb2FkZWRFdmVudCgpCnsKICAgIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKfQppZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwphZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgaGFuZGxlTG9hZEV2ZW50KTsKYWRk
RXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGhhbmRsZURPTUNvbnRlbnRMb2FkZWRF
dmVudCk7Cjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PlRFU1QgRElEIE5PVCBSVU4gWUVUPC9ib2R5
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>98797</attachid>
            <date>2011-06-27 15:06:06 -0700</date>
            <delta_ts>2011-06-27 15:06:06 -0700</delta_ts>
            <desc>Improved test case</desc>
            <filename>create-frame-in-DOMContentLoaded.html</filename>
            <type>text/html</type>
            <size>1012</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PGhlYWQ+CjxzY3JpcHQ+CnZhciBmcmFtZTsKZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKewogICAg
dmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGxpbmUuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChsaW5lKTsKfQpmdW5jdGlvbiBoYW5kbGVET01Db250ZW50TG9hZGVkRXZl
bnQoKQp7CiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHkuZmlyc3RD
aGlsZCk7CiAgICBwcmludCgiQSkgRW50ZXJlZCBET01Db250ZW50TG9hZGVkIGV2ZW50IGhhbmRs
ZXIgZnVuY3Rpb24uIik7CiAgICBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFt
ZSIpOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7CiAgICBwcmludCgiQikg
RXhpdGluZyBET01Db250ZW50TG9hZGVkIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24uIik7Cn0KZnVu
Y3Rpb24gaGFuZGxlTG9hZEV2ZW50KCkKewogICAgcHJpbnQoIkMpIEVudGVyZWQgbG9hZCBldmVu
dCBoYW5kbGVyIGZ1bmN0aW9uLiIpOwogICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmcmFt
ZSk7CiAgICBwcmludCgiRCkgRXhpdGluZyBsb2FkIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24uIik7
CiAgICBwcmludCgiVGVzdCBwYXNzZWQgaWYgbWVzc2FnZXMgQSwgQiwgQywgRCB3ZXJlIGFsbCBp
biBvcmRlciBhbmQgdGhlcmUgd2FzIG5vIGNyYXNoLiIpOwp9CmlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCBoYW5kbGVMb2FkRXZlbnQpOwphZGRFdmVudExpc3RlbmVyKCJE
T01Db250ZW50TG9hZGVkIiwgaGFuZGxlRE9NQ29udGVudExvYWRlZEV2ZW50KTsKPC9zY3JpcHQ+
CjwvaGVhZD4KPGJvZHk+VEVTVCBESUQgTk9UIFJVTiBZRVQ8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98832</attachid>
            <date>2011-06-27 17:56:21 -0700</date>
            <delta_ts>2011-06-28 17:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63483-20110627175619.patch</filename>
            <type>text/plain</type>
            <size>4192</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5ODgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMjcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBDcmFzaCBsb2FkaW5nIHBhZ2UgdGhhdCBhZGRzL3Jl
bW92ZXMgZnJhbWUgaW4gRE9NQ29udGVudExvYWRlZC9sb2FkZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDgzCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmluaXQpOiBBZGRlZCBhIGNoZWNrIGZvciB0aGUKKyAgICAgICAgY2Fz
ZSB3aGVyZSBmaW5pc2hlZExvYWRpbmcgaGFzIGFscmVhZHkgY3JlYXRlZCB0aGUgZG9jdW1lbnQu
IFRoaXMgaGFwcGVucyBpbgorICAgICAgICB0aGUgV2ViS2l0MiBjb2RlIHBhdGguIEl0IG1pZ2h0
IGJlIGJldHRlciB0byBmaXggdGhpcyBieSBjaGFuZ2luZyBXZWJLaXQyCisgICAgICAgIGluc3Rl
YWQgb2YgdGhpcyBjaGFuZ2UgaGVyZS4KKwogMjAxMS0wNi0yNyAgQnJpYW4gV2VpbnN0ZWluICA8
YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBXZWJDb3JlIHZjcHJvaiBm
aWxlIGFmdGVyIHI4OTg1MS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gODk4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTUgKzIyMCwxNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojppbml0KCkKICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgZWFybHksIHNvIHRoYXQgYW4g
aW5pdGlhbCBkb2N1bWVudCBnZXRzIGNvcnJlY3Qgc2FuZGJveCBmbGFncyBpbiBpdHMgU2VjdXJp
dHlPcmlnaW4uCiAgICAgdXBkYXRlU2FuZGJveEZsYWdzKCk7CiAKLSAgICAvLyB0aGlzIHNvbWV3
aGF0IG9kZCBzZXQgb2Ygc3RlcHMgaXMgbmVlZGVkIHRvIGdpdmUgdGhlIGZyYW1lIGFuIGluaXRp
YWwgZW1wdHkgZG9jdW1lbnQKKyAgICAvLyBUaGlzIHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMg
Z2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQuCiAgICAgbV9zdGF0ZU1h
Y2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpDcmVhdGluZ0luaXRpYWxF
bXB0eURvY3VtZW50KTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC0+Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
IikpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBzZXRTdGF0ZShGcmFt
ZVN0YXRlUHJvdmlzaW9uYWwpOwogICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c2V0
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShLVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmco
KSwgU3RyaW5nKCkpKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPmZpbmlzaGVk
TG9hZGluZygpOwotICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCks
IGZhbHNlKTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CisgICAgaWYg
KCFtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRl
cigpLT5iZWdpbihLVVJMKCksIGZhbHNlKTsKKyAgICAgICAgbV9kb2N1bWVudExvYWRlci0+d3Jp
dGVyKCktPmVuZCgpOworICAgIH0KICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYW5jZWxQYXJz
aW5nKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogICAgIG1fZGlkQ2FsbEltcGxp
Y2l0Q2xvc2UgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODk4ODIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0wNi0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dlYktpdDJdIENyYXNoIGxvYWRpbmcg
cGFnZSB0aGF0IGFkZHMvcmVtb3ZlcyBmcmFtZSBpbiBET01Db250ZW50TG9hZGVkL2xvYWRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0ODMKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUp
OiBBZGRlZCBhIGNoZWNrIGZvciBudWxsIHdoZW4gY3JlYXRpbmcKKyAgICAgICAgYSBmcmFtZS4g
QWxzbyBhZGRlZCBhIGNoZWNrIHRoYXQgd2FzIGluIHRoZSBXZWJLaXQxIGNvZGUsIGJ1dCBub3Qg
aGVyZS4gU3RyYW5nZWx5LAorICAgICAgICB0aGUgY29tbWVudCBmcm9tIHRoZSBzZWNvbmQgY2hl
Y2sgd2FzIHN0aWxsIGhlcmUsIGJ1dCBub3QgdGhlIGNvZGUuCisKIDIwMTEtMDYtMjcgIEplZmYg
TWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBI
dW50LgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDg5
ODQzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDcsOCArMTIwNywxMyBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6CiAgICAgUmVmUHRyPFdlYkZy
YW1lPiBzdWJmcmFtZSA9IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZSh3ZWJQYWdlLCBuYW1lLCBv
d25lckVsZW1lbnQpOwogCiAgICAgRnJhbWUqIGNvcmVTdWJmcmFtZSA9IHN1YmZyYW1lLT5jb3Jl
RnJhbWUoKTsKKyAgICBpZiAoIWNvcmVTdWJmcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBhcmJpdHJhcnkgSmF2
YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5LgorICAgIGlmICgh
Y29yZVN1YmZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVybiAwOwogCi0gICAgIC8vIFRoZSBj
cmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5IGhhdmUgcnVuIGFyYml0cmFyeSBKYXZhU2NyaXB0IHRo
YXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBwYWdlIGFscmVhZHkuCiAgICAgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY29y
ZVN1YmZyYW1lKTsKIAogICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZl
IHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99012</attachid>
            <date>2011-06-28 17:49:28 -0700</date>
            <delta_ts>2011-06-29 12:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63483-20110628174927.patch</filename>
            <type>text/plain</type>
            <size>7524</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5OTU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMjcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBDcmFzaCBsb2FkaW5nIHBhZ2UgdGhhdCBhZGRzL3Jl
bW92ZXMgZnJhbWUgaW4gRE9NQ29udGVudExvYWRlZC9sb2FkZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDgzCisKKyAgICAgICAgVGVzdDogZmFz
dC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQuaHRtbAorCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDogKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KTog
QWRkZWQgYSBjaGVjayBmb3IgdGhlCisgICAgICAgIGNhc2Ugd2hlcmUgZmluaXNoZWRMb2FkaW5n
IGhhcyBhbHJlYWR5IGNyZWF0ZWQgdGhlIGRvY3VtZW50LiBUaGlzIGhhcHBlbnMgaW4KKyAgICAg
ICAgdGhlIFdlYktpdDIgY29kZSBwYXRoLiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gZml4IHRoaXMg
YnkgY2hhbmdpbmcgV2ViS2l0MgorICAgICAgICBpbnN0ZWFkIG9mIHRoaXMgY2hhbmdlIGhlcmUu
CisKIDIwMTEtMDYtMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDg5OTU2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDE1ICsyMjAsMjAgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGVhcmx5LCBz
byB0aGF0IGFuIGluaXRpYWwgZG9jdW1lbnQgZ2V0cyBjb3JyZWN0IHNhbmRib3ggZmxhZ3MgaW4g
aXRzIFNlY3VyaXR5T3JpZ2luLgogICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCi0gICAgLy8g
dGhpcyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGlzIG5lZWRlZCB0byBnaXZlIHRoZSBmcmFt
ZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50CisgICAgLy8gVGhpcyBzb21ld2hhdCBvZGQgc2V0
IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50LgogICAg
IG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6Q3JlYXRp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9j
bGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVS
TFN0cmluZywgIiIpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0
U3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXItPnNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9odG1sIiwg
MCwgU3RyaW5nKCksIFN0cmluZygpKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
LT5maW5pc2hlZExvYWRpbmcoKTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+YmVn
aW4oS1VSTCgpLCBmYWxzZSk7Ci0gICAgbV9kb2N1bWVudExvYWRlci0+d3JpdGVyKCktPmVuZCgp
OworICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICAvLyBGSVhNRTogRm9y
IFdlYktpdDIsIHdlIGFscmVhZHkgaGF2ZSBhIGRvY3VtZW50IGF0IHRoaXMgcG9pbnQsIGFuZCBi
ZWdpbi9lbmQgY2F1c2VzIHByb2JsZW1zLgorICAgICAgICAvLyBGb3IgV2ViS2l0MSwgYXQgbGVh
c3Qgb24gdGhlIE1hYyBwbGF0Zm9ybSwgd2UgZG8gbm90IGhhdmUgYSBkb2N1bWVudCwgYW5kIG5l
ZWQgdGhpcyBiZWdpbi9lbmQuCisgICAgICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gZWxpbWlu
YXRlIHRoaXMgZGlmZmVyZW5jZS4KKyAgICAgICAgbV9kb2N1bWVudExvYWRlci0+d3JpdGVyKCkt
PmJlZ2luKEtVUkwoKSwgZmFsc2UpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT53cml0ZXIo
KS0+ZW5kKCk7CisgICAgfQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmco
KTsKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6
OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAgICAgbV9kaWRDYWxsSW1wbGljaXRD
bG9zZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4OTk1NikKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2
LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbV2ViS2l0Ml0gQ3Jhc2ggbG9hZGluZyBwYWdl
IHRoYXQgYWRkcy9yZW1vdmVzIGZyYW1lIGluIERPTUNvbnRlbnRMb2FkZWQvbG9hZGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQ4MworCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6IEFk
ZGVkIGEgY2hlY2sgZm9yIG51bGwgd2hlbiBjcmVhdGluZworICAgICAgICBhIGZyYW1lLiBBbHNv
IGFkZGVkIGEgY2hlY2sgdGhhdCB3YXMgaW4gdGhlIFdlYktpdDEgY29kZSwgYnV0IG5vdCBoZXJl
LiBTdHJhbmdlbHksCisgICAgICAgIHRoZSBjb21tZW50IGZyb20gdGhlIHNlY29uZCBjaGVjayB3
YXMgc3RpbGwgaGVyZSwgYnV0IG5vdCB0aGUgY29kZS4KKwogMjAxMS0wNi0yOCAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gODk5NTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNyw4ICsxMjA3LDEzIEBAIFBhc3NS
ZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKICAgICBSZWZQdHI8V2ViRnJhbWU+
IHN1YmZyYW1lID0gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKHdlYlBhZ2UsIG5hbWUsIG93bmVy
RWxlbWVudCk7CiAKICAgICBGcmFtZSogY29yZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVGcmFt
ZSgpOworICAgIGlmICghY29yZVN1YmZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8v
IFRoZSBjcmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5IGhhdmUgcnVuIGFyYml0cmFyeSBKYXZhU2Ny
aXB0IHRoYXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBwYWdlIGFscmVhZHkuCisgICAgaWYgKCFjb3Jl
U3ViZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgLy8gVGhlIGNyZWF0
aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCBy
ZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCktPmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlU3Vi
ZnJhbWUpOwogCiAgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVt
b3ZlZCBpdCBmcm9tIHRoZSBkb2N1bWVudC4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5OTc3KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMDYtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBDcmFzaCBsb2FkaW5n
IHBhZ2UgdGhhdCBhZGRzL3JlbW92ZXMgZnJhbWUgaW4gRE9NQ29udGVudExvYWRlZC9sb2FkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDgzCisK
KyAgICAgICAgKiBmYXN0L2xvYWRlci9jcmVhdGUtZnJhbWUtaW4tRE9NQ29udGVudExvYWRlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1p
bi1ET01Db250ZW50TG9hZGVkLmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTI3ICBEaWVnbyBHb256
YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jcmVh
dGUtZnJhbWUtaW4tRE9NQ29udGVudExvYWRlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3Jl
YXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUgQEAKK0EpIEVudGVyZWQgRE9NQ29udGVudExvYWRlZCBldmVudCBoYW5kbGVy
IGZ1bmN0aW9uLgorQykgRW50ZXJlZCBsb2FkIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24uCitEKSBF
eGl0aW5nIGxvYWQgZXZlbnQgaGFuZGxlciBmdW5jdGlvbi4KK1Rlc3QgcGFzc2VkIGlmIG1lc3Nh
Z2VzIEEsIEIsIEMsIEQgd2VyZSBhbGwgaW4gb3JkZXIgYW5kIHRoZXJlIHdhcyBubyBjcmFzaC4K
K0IpIEV4aXRpbmcgRE9NQ29udGVudExvYWRlZCBldmVudCBoYW5kbGVyIGZ1bmN0aW9uLgoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3JlYXRlLWZyYW1lLWlu
LURPTUNvbnRlbnRMb2FkZWQtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jcmVhdGUt
ZnJhbWUtaW4tRE9NQ29udGVudExvYWRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1pbi1ET01Db250ZW50TG9hZGVkLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jcmVhdGUtZnJhbWUtaW4tRE9NQ29u
dGVudExvYWRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8aGVhZD4KKzxz
Y3JpcHQ+Cit2YXIgZnJhbWU7CitmdW5jdGlvbiBwcmludChtZXNzYWdlKQoreworICAgIHZhciBs
aW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgbGluZS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChsaW5lKTsKK30KK2Z1bmN0aW9uIGhhbmRsZURPTUNvbnRlbnRMb2FkZWRFdmVu
dCgpCit7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LmZpcnN0
Q2hpbGQpOworICAgIHByaW50KCJBKSBFbnRlcmVkIERPTUNvbnRlbnRMb2FkZWQgZXZlbnQgaGFu
ZGxlciBmdW5jdGlvbi4iKTsKKyAgICBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIHByaW50
KCJCKSBFeGl0aW5nIERPTUNvbnRlbnRMb2FkZWQgZXZlbnQgaGFuZGxlciBmdW5jdGlvbi4iKTsK
K30KK2Z1bmN0aW9uIGhhbmRsZUxvYWRFdmVudCgpCit7CisgICAgcHJpbnQoIkMpIEVudGVyZWQg
bG9hZCBldmVudCBoYW5kbGVyIGZ1bmN0aW9uLiIpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZnJhbWUpOworICAgIHByaW50KCJEKSBFeGl0aW5nIGxvYWQgZXZlbnQgaGFuZGxlciBm
dW5jdGlvbi4iKTsKKyAgICBwcmludCgiVGVzdCBwYXNzZWQgaWYgbWVzc2FnZXMgQSwgQiwgQywg
RCB3ZXJlIGFsbCBpbiBvcmRlciBhbmQgdGhlcmUgd2FzIG5vIGNyYXNoLiIpOworfQoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgaGFuZGxlTG9hZEV2ZW50KTsKK2Fk
ZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBoYW5kbGVET01Db250ZW50TG9hZGVk
RXZlbnQpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT5URVNUIERJRCBOT1QgUlVOIFlFVDwv
Ym9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2NyZWF0
ZS1mcmFtZS1pbi1ET01Db250ZW50TG9hZGVkLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1p
bWUtdHlwZQogICArIHRleHQvaHRtbApBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99130</attachid>
            <date>2011-06-29 12:52:19 -0700</date>
            <delta_ts>2011-06-29 12:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63483-20110629125218.patch</filename>
            <type>text/plain</type>
            <size>4524</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMDI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMjkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBDcmFzaCBsb2FkaW5nIHBhZ2UgdGhhdCBhZGRzL3Jl
bW92ZXMgZnJhbWUgaW4gRE9NQ29udGVudExvYWRlZC9sb2FkZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDgzCisKKyAgICAgICAgVGVzdDogZmFz
dC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQuaHRtbAorCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojppbml0KTogQWRkZWQgYW4gYXNzZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZ0RvY3VtZW50KTogUmVtb3ZlZCBhIG5vbi1oZWxwZnVsICNpZgor
ICAgICAgICBzdGF0ZW1lbnQuIFRoZSBydWxlIHRoYXQgd2UgZG8gbm90IGNhbGwgdGhlIGNsaWVu
dCB3aGVuIGNyZWF0aW5nIHRoZSBpbml0aWFsCisgICAgICAgIGVtcHR5IGRvY3VtZW50IHdhcyBu
b21pbmFsbHkgc3BlY2lmaWMgdG8gV2luZG93cyBhbmQgQ2hyb21pdW0gYnV0IGlzIG5lZWRlZAor
ICAgICAgICBmb3IgYWxsIHBsYXRmb3Jtcy4KKwogMjAxMS0wNi0yOSAgRGltaXRyaSBHbGF6a292
ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDkw
MDI3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIwLDEzICsyMjAsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAg
Ly8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGVhcmx5LCBzbyB0aGF0IGFuIGluaXRpYWwgZG9jdW1l
bnQgZ2V0cyBjb3JyZWN0IHNhbmRib3ggZmxhZ3MgaW4gaXRzIFNlY3VyaXR5T3JpZ2luLgogICAg
IHVwZGF0ZVNhbmRib3hGbGFncygpOwogCi0gICAgLy8gdGhpcyBzb21ld2hhdCBvZGQgc2V0IG9m
IHN0ZXBzIGlzIG5lZWRlZCB0byBnaXZlIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3Vt
ZW50CisgICAgLy8gVGhpcyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFt
ZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50LgorICAgIC8vIEl0IHdvdWxkIGJlIGJldHRlciBp
ZiB0aGlzIGNvdWxkIGJlIGRvbmUgd2l0aCBldmVuIGZld2VyIHN0ZXBzLgogICAgIG1fc3RhdGVN
YWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6Q3JlYXRpbmdJbml0aWFs
RW1wdHlEb2N1bWVudCk7CiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQtPmNy
ZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVSTFN0cmluZywg
IiIpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0U3RhdGUoRnJh
bWVTdGF0ZVByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNl
dFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9odG1sIiwgMCwgU3RyaW5n
KCksIFN0cmluZygpKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5maW5pc2hl
ZExvYWRpbmcoKTsKKyAgICBBU1NFUlQoIW1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIG1fZG9j
dW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCksIGZhbHNlKTsKICAgICBtX2RvY3Vt
ZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2Fu
Y2VsUGFyc2luZygpOwpAQCAtMjA1MCwxMSArMjA1Miw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6Omlz
TG9hZGluZ01haW5GcmFtZSgpIGMKIAogdm9pZCBGcmFtZUxvYWRlcjo6ZmluaXNoZWRMb2FkaW5n
RG9jdW1lbnQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICAvLyBGSVhNRTogUGxhdGZv
cm1zIHNob3VsZG4ndCBkaWZmZXIgaGVyZSEKLSNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KENIUk9NSVVNKQogICAgIGlmIChtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAjaWYgIUVOQUJMRShXRUJfQVJD
SElWRSkgJiYgIUVOQUJMRShNSFRNTCkKICAgICBtX2NsaWVudC0+ZmluaXNoZWRMb2FkaW5nKGxv
YWRlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MDAyNykKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2LTI5ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbV2ViS2l0Ml0gQ3Jhc2ggbG9hZGluZyBwYWdlIHRoYXQg
YWRkcy9yZW1vdmVzIGZyYW1lIGluIERPTUNvbnRlbnRMb2FkZWQvbG9hZGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQ4MworCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6IEFkZGVkIGEg
Y2hlY2sgZm9yIG51bGwgd2hlbiBjcmVhdGluZworICAgICAgICBhIGZyYW1lLiBBbHNvIGFkZGVk
IGEgY2hlY2sgdGhhdCB3YXMgaW4gdGhlIFdlYktpdDEgY29kZSwgYnV0IG5vdCBoZXJlLiBTdHJh
bmdlbHksCisgICAgICAgIHRoZSBjb21tZW50IGZyb20gdGhlIHNlY29uZCBjaGVjayB3YXMgc3Rp
bGwgaGVyZSwgYnV0IG5vdCB0aGUgY29kZS4KKwogMjAxMS0wNi0yOCAgQ2hhbmcgU2h1ICA8Y3No
dUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTAwMjcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNyw4ICsxMjA3LDEzIEBAIFBhc3NSZWZQdHI8
RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKICAgICBSZWZQdHI8V2ViRnJhbWU+IHN1YmZy
YW1lID0gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKHdlYlBhZ2UsIG5hbWUsIG93bmVyRWxlbWVu
dCk7CiAKICAgICBGcmFtZSogY29yZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVGcmFtZSgpOwor
ICAgIGlmICghY29yZVN1YmZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZSBj
cmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5IGhhdmUgcnVuIGFyYml0cmFyeSBKYXZhU2NyaXB0IHRo
YXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBwYWdlIGFscmVhZHkuCisgICAgaWYgKCFjb3JlU3ViZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgLy8gVGhlIGNyZWF0aW9uIG9m
IHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVk
IGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCktPmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlU3ViZnJhbWUp
OwogCiAgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVtb3ZlZCBp
dCBmcm9tIHRoZSBkb2N1bWVudC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99131</attachid>
            <date>2011-06-29 12:58:58 -0700</date>
            <delta_ts>2011-06-29 13:46:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63483-20110629125857.patch</filename>
            <type>text/plain</type>
            <size>7567</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMDI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMjkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBDcmFzaCBsb2FkaW5nIHBhZ2UgdGhhdCBhZGRzL3Jl
bW92ZXMgZnJhbWUgaW4gRE9NQ29udGVudExvYWRlZC9sb2FkZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDgzCisKKyAgICAgICAgVGVzdDogZmFz
dC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQuaHRtbAorCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojppbml0KTogQWRkZWQgYW4gYXNzZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZ0RvY3VtZW50KTogUmVtb3ZlZCBhIG5vbi1oZWxwZnVsICNpZgor
ICAgICAgICBzdGF0ZW1lbnQuIFRoZSBydWxlIHRoYXQgd2UgZG8gbm90IGNhbGwgdGhlIGNsaWVu
dCB3aGVuIGNyZWF0aW5nIHRoZSBpbml0aWFsCisgICAgICAgIGVtcHR5IGRvY3VtZW50IHdhcyBu
b21pbmFsbHkgc3BlY2lmaWMgdG8gV2luZG93cyBhbmQgQ2hyb21pdW0gYnV0IGlzIG5lZWRlZAor
ICAgICAgICBmb3IgYWxsIHBsYXRmb3Jtcy4KKwogMjAxMS0wNi0yOSAgRGltaXRyaSBHbGF6a292
ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDkw
MDI3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIwLDEzICsyMjAsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAg
Ly8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGVhcmx5LCBzbyB0aGF0IGFuIGluaXRpYWwgZG9jdW1l
bnQgZ2V0cyBjb3JyZWN0IHNhbmRib3ggZmxhZ3MgaW4gaXRzIFNlY3VyaXR5T3JpZ2luLgogICAg
IHVwZGF0ZVNhbmRib3hGbGFncygpOwogCi0gICAgLy8gdGhpcyBzb21ld2hhdCBvZGQgc2V0IG9m
IHN0ZXBzIGlzIG5lZWRlZCB0byBnaXZlIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3Vt
ZW50CisgICAgLy8gVGhpcyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFt
ZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50LgorICAgIC8vIEl0IHdvdWxkIGJlIGJldHRlciBp
ZiB0aGlzIGNvdWxkIGJlIGRvbmUgd2l0aCBldmVuIGZld2VyIHN0ZXBzLgogICAgIG1fc3RhdGVN
YWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6Q3JlYXRpbmdJbml0aWFs
RW1wdHlEb2N1bWVudCk7CiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQtPmNy
ZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVSTFN0cmluZywg
IiIpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0U3RhdGUoRnJh
bWVTdGF0ZVByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNl
dFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4dC9odG1sIiwgMCwgU3RyaW5n
KCksIFN0cmluZygpKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5maW5pc2hl
ZExvYWRpbmcoKTsKKyAgICBBU1NFUlQoIW1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIG1fZG9j
dW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdpbihLVVJMKCksIGZhbHNlKTsKICAgICBtX2RvY3Vt
ZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2Fu
Y2VsUGFyc2luZygpOwpAQCAtMjA1MCwxMSArMjA1Miw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6Omlz
TG9hZGluZ01haW5GcmFtZSgpIGMKIAogdm9pZCBGcmFtZUxvYWRlcjo6ZmluaXNoZWRMb2FkaW5n
RG9jdW1lbnQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICAvLyBGSVhNRTogUGxhdGZv
cm1zIHNob3VsZG4ndCBkaWZmZXIgaGVyZSEKLSNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KENIUk9NSVVNKQogICAgIGlmIChtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAjaWYgIUVOQUJMRShXRUJfQVJD
SElWRSkgJiYgIUVOQUJMRShNSFRNTCkKICAgICBtX2NsaWVudC0+ZmluaXNoZWRMb2FkaW5nKGxv
YWRlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MDAyNykKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2LTI5ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbV2ViS2l0Ml0gQ3Jhc2ggbG9hZGluZyBwYWdlIHRoYXQg
YWRkcy9yZW1vdmVzIGZyYW1lIGluIERPTUNvbnRlbnRMb2FkZWQvbG9hZGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQ4MworCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6IEFkZGVkIGEg
Y2hlY2sgZm9yIG51bGwgd2hlbiBjcmVhdGluZworICAgICAgICBhIGZyYW1lLiBBbHNvIGFkZGVk
IGEgY2hlY2sgdGhhdCB3YXMgaW4gdGhlIFdlYktpdDEgY29kZSwgYnV0IG5vdCBoZXJlLiBTdHJh
bmdlbHksCisgICAgICAgIHRoZSBjb21tZW50IGZyb20gdGhlIHNlY29uZCBjaGVjayB3YXMgc3Rp
bGwgaGVyZSwgYnV0IG5vdCB0aGUgY29kZS4KKwogMjAxMS0wNi0yOCAgQ2hhbmcgU2h1ICA8Y3No
dUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTAwMjcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNyw4ICsxMjA3LDEzIEBAIFBhc3NSZWZQdHI8
RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKICAgICBSZWZQdHI8V2ViRnJhbWU+IHN1YmZy
YW1lID0gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKHdlYlBhZ2UsIG5hbWUsIG93bmVyRWxlbWVu
dCk7CiAKICAgICBGcmFtZSogY29yZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVGcmFtZSgpOwor
ICAgIGlmICghY29yZVN1YmZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZSBj
cmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5IGhhdmUgcnVuIGFyYml0cmFyeSBKYXZhU2NyaXB0IHRo
YXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBwYWdlIGFscmVhZHkuCisgICAgaWYgKCFjb3JlU3ViZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgLy8gVGhlIGNyZWF0aW9uIG9m
IHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVk
IGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCktPmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlU3ViZnJhbWUp
OwogCiAgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVtb3ZlZCBp
dCBmcm9tIHRoZSBkb2N1bWVudC4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMDI3KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYt
MjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBDcmFzaCBsb2FkaW5nIHBhZ2Ug
dGhhdCBhZGRzL3JlbW92ZXMgZnJhbWUgaW4gRE9NQ29udGVudExvYWRlZC9sb2FkZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDgzCisKKyAgICAg
ICAgKiBmYXN0L2xvYWRlci9jcmVhdGUtZnJhbWUtaW4tRE9NQ29udGVudExvYWRlZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1pbi1ET01D
b250ZW50TG9hZGVkLmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTI5ICBOYXRlIENoYXBpbiAgPGph
cGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgY2hyb21pdW0gdGVzdCB1
cGRhdGVzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURP
TUNvbnRlbnRMb2FkZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1pbi1ET01Db250ZW50TG9hZGVkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1pbi1E
T01Db250ZW50TG9hZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBA
CitBKSBFbnRlcmVkIERPTUNvbnRlbnRMb2FkZWQgZXZlbnQgaGFuZGxlciBmdW5jdGlvbi4KK0Mp
IEVudGVyZWQgbG9hZCBldmVudCBoYW5kbGVyIGZ1bmN0aW9uLgorRCkgRXhpdGluZyBsb2FkIGV2
ZW50IGhhbmRsZXIgZnVuY3Rpb24uCitUZXN0IHBhc3NlZCBpZiBtZXNzYWdlcyBBLCBCLCBDLCBE
IHdlcmUgYWxsIGluIG9yZGVyIGFuZCB0aGVyZSB3YXMgbm8gY3Jhc2guCitCKSBFeGl0aW5nIERP
TUNvbnRlbnRMb2FkZWQgZXZlbnQgaGFuZGxlciBmdW5jdGlvbi4KClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2NyZWF0ZS1mcmFtZS1pbi1ET01Db250ZW50TG9h
ZGVkLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0
aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNv
bnRlbnRMb2FkZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9j
cmVhdGUtZnJhbWUtaW4tRE9NQ29udGVudExvYWRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvY3JlYXRlLWZyYW1lLWluLURPTUNvbnRlbnRMb2FkZWQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGZy
YW1lOworZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKK3sKKyAgICB2YXIgbGluZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGxpbmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlu
ZSk7Cit9CitmdW5jdGlvbiBoYW5kbGVET01Db250ZW50TG9hZGVkRXZlbnQoKQoreworICAgIGRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKyAgICBw
cmludCgiQSkgRW50ZXJlZCBET01Db250ZW50TG9hZGVkIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24u
Iik7CisgICAgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICBwcmludCgiQikgRXhpdGluZyBE
T01Db250ZW50TG9hZGVkIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24uIik7Cit9CitmdW5jdGlvbiBo
YW5kbGVMb2FkRXZlbnQoKQoreworICAgIHByaW50KCJDKSBFbnRlcmVkIGxvYWQgZXZlbnQgaGFu
ZGxlciBmdW5jdGlvbi4iKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGZyYW1lKTsK
KyAgICBwcmludCgiRCkgRXhpdGluZyBsb2FkIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24uIik7Cisg
ICAgcHJpbnQoIlRlc3QgcGFzc2VkIGlmIG1lc3NhZ2VzIEEsIEIsIEMsIEQgd2VyZSBhbGwgaW4g
b3JkZXIgYW5kIHRoZXJlIHdhcyBubyBjcmFzaC4iKTsKK30KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGhhbmRsZUxvYWRFdmVudCk7CithZGRFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIiwgaGFuZGxlRE9NQ29udGVudExvYWRlZEV2ZW50KTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+VEVTVCBESUQgTk9UIFJVTiBZRVQ8L2JvZHk+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9jcmVhdGUtZnJhbWUtaW4tRE9N
Q29udGVudExvYWRlZC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0
ZXh0L2h0bWwKQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>