<?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>18703</bug_id>
          
          <creation_ts>2008-04-23 15:00:16 -0700</creation_ts>
          <short_desc>changing the &apos;size&apos; property on a text input does not affect its length</short_desc>
          <delta_ts>2008-11-24 13:41:31 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://my.att.net</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="Eric Roman">eroman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>bdakin</cc>
    
    <cc>gwilson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>78706</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Roman">eroman</who>
    <bug_when>2008-04-23 15:00:16 -0700</bug_when>
    <thetext>Clicking on the maps tab causes the input field to overflow onto next line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78707</commentid>
    <comment_count>1</comment_count>
      <attachid>20779</attachid>
    <who name="Eric Roman">eroman</who>
    <bug_when>2008-04-23 15:02:08 -0700</bug_when>
    <thetext>Created attachment 20779
Try to set the &quot;size&quot; property on an input field -- has no effect in safari

In FF/Opera/IE, this works. However in Safari it does not. Reproduced on winxp Safari 3.1 and nightly r32413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88517</commentid>
    <comment_count>2</comment_count>
      <attachid>22803</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-08-14 17:30:56 -0700</bug_when>
    <thetext>Created attachment 22803
Possible fix to bug 18703

This patch should fix bug 18703.  Input fields did not repaint themselves when their &quot;size&quot; attributes were changed.  When a text input field&apos;s size was changed, nothing happened on Safari, but the field resized on FF/IE.

This fix tells the html element to recalculate and repaint itself if it is a text field element and has been resized.

Also included is a layout test (not sure I put it in the right directory, though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88771</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-18 15:56:02 -0700</bug_when>
    <thetext>Your patch appears to use tabs for indentation.  The WebKit code base uses spaces for indentation, and the SVN repository will not allow us to commit any files containing tabs.  Can you please update the patch to not use tabs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88994</commentid>
    <comment_count>4</comment_count>
      <attachid>22803</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-20 23:55:24 -0700</bug_when>
    <thetext>Comment on attachment 22803
Possible fix to bug 18703

r- for using tabs and forgetting the newline at the end of the file.

However, I think this fix is also not quite right.  I think the correct call might be setChanged(true).  I don&apos;t think we generally call repaint() directly.  But Hyatt or Beth (who hack in this code more often than I) should comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89012</commentid>
    <comment_count>5</comment_count>
      <attachid>22922</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-08-21 11:41:22 -0700</bug_when>
    <thetext>Created attachment 22922
Improved possible fix for bug 18703

Oops -- sorry about that.  Although I could blame my IDE, not remembering to use spaces instead of tabs is probably my own fault.

Here is an improved potential patch.  Tabs have been replaced with spaces, and a newline has been added to the end of the layout test.

I tried using setChanged() instead of requesting the renderer repaint the element, but it didn&apos;t seem to have any effect.  Also using setValueMatchesRenderer(false) doesn&apos;t have any effect either.  What&apos;s the right way to let the renderer know to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89016</commentid>
    <comment_count>6</comment_count>
      <attachid>22923</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-08-21 12:54:11 -0700</bug_when>
    <thetext>Created attachment 22923
Improved possible fix for bug 18703

Forgot the tabs in the JS in the layout test...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89042</commentid>
    <comment_count>7</comment_count>
      <attachid>22923</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-21 17:41:18 -0700</bug_when>
    <thetext>Comment on attachment 22923
Improved possible fix for bug 18703

This is the wrong place to make a change. The setSize function is a helper function that calls setAttribute, but the same bug can happen if you call setAttribute directly; you can do that from JavaScript. Just change the line in your test from:

    document.getElementById(&apos;success&apos;).size=30;

to:

    document.getElementById(&apos;success&apos;).setAttribute(&quot;size&quot;, 30);

The code that always runs when sizeAttr is changed is in HTMLInputElement::parseMappedAttribute, so if we need to do more work, it would be there.

I think a direct call to setNeedsLayoutAndPrefWidthsRecalc on the renderer is not correct. It may be as simple as calling setChanged. We should look at other attributes that don&apos;t work via CSS but can affect the layout to find the right pattern. I wasn&apos;t able to think of one right away -- maybe Hyatt can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96385</commentid>
    <comment_count>8</comment_count>
      <attachid>24610</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-23 13:22:42 -0700</bug_when>
    <thetext>Created attachment 24610
Possible patch to bug 18703

Here is an improved patch for this issue; I think this addresses Darin&apos;s points.

Instead of telling the renderer that the element is dirty in setSize of HTMLInputElement, instead, this patch adds a small bit of logic to Element&apos;s setAttribute method.  HTMLInputElement&apos;s setSize and parseMappedAttributes functions both invoke Element.setAttribute, so calling either will show the input resizing.

Additionally, I updated the layout test to verify that setting the size and setAttribute(&quot;size&quot;) will update the size.

The other &apos;invalidation&apos; methods (setChanged and attributeChanged, specifically) did not seem to incur a later re-layout, so outside of defining a new method, I had to call setNeedsLayoutAndPrefWidthsRecalc.  I think this logic is correct: resizing an element that already had a size could have dramatic effects on how a page is sized and layed out, right?

This logic was added to both setAttribute methods in dom/Element.  I&apos;m not sure why these two methods are not refactored, since they look strikingly similar, but I don&apos;t know enough about their differences to refactor them here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96387</commentid>
    <comment_count>9</comment_count>
      <attachid>24610</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-23 13:23:56 -0700</bug_when>
    <thetext>Comment on attachment 24610
Possible patch to bug 18703

Adding checks for derived class HTML-specific attributes in Element.cpp is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96396</commentid>
    <comment_count>10</comment_count>
      <attachid>22923</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-23 13:33:13 -0700</bug_when>
    <thetext>Comment on attachment 22923
Improved possible fix for bug 18703

This is a 1-line fix. setChanged is just missing from inside parseMappedAttribute.

else if (attr-&gt;name() == sizeAttr) {
        m_size = !attr-&gt;isNull() ? attr-&gt;value().toInt() : 20;
    }

Throw a setNeedsLayoutAndPrefWidthsRecalc() in there and you&apos;re done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96397</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-23 13:33:42 -0700</bug_when>
    <thetext>(Not setChanged, sorry meant setNeedsLayoutAndPrefWidthsDirty.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96426</commentid>
    <comment_count>12</comment_count>
      <attachid>24621</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-23 15:07:57 -0700</bug_when>
    <thetext>Created attachment 24621
Possible patch to bug 18703.

Ok, here&apos;s the modified patch with the suggested changes....it is probably much simpler this way, so thanks for the feedback :)

I added the call that you specified, but I also had to add a check whether the renderer was valid first.  I debated checking the type of the input element too, but decided against it since non-text form input elements could also have sizes that could be changed (the password type comes to mind.)  

I originally spotted &apos;idAttr&apos; in Element, and thought size was also a valid DOM attribute that could be tested, but I didn&apos;t realize it is HTML-specific.  Sorry about that.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96471</commentid>
    <comment_count>13</comment_count>
      <attachid>24621</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-23 18:50:03 -0700</bug_when>
    <thetext>Comment on attachment 24621
Possible patch to bug 18703.

Looks good. r=me with some comments.

&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fixed bug 18703.  Text fields would not repaint themselves
&gt; +        after having their &quot;size&quot; attributes modified.  This modification 
&gt; +        tells the object to recalculate its width and repaint itself when 
&gt; +        its &quot;size&quot; attribute is parsed.

It is helpful to put the URL and title of the bug you are fixing in the ChangeLog

&gt; +        if(renderer())
Space required after the if.

&gt; +2008-10-23  Glenn Wilson  &lt;gwilson@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Added a new text to verify that the width of text input 
&gt; +        fields can be modified by javascript using the &quot;size&quot; attribute.
Again, a URL and title help to give context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96508</commentid>
    <comment_count>14</comment_count>
      <attachid>24640</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-24 08:52:51 -0700</bug_when>
    <thetext>Created attachment 24640
Improved patch for bug 18703

Here is an improved patch with better changelog comments and space after the &apos;if&apos;.  The original problem URL (http://my.att.net) seems to have been modified since this was reported, so I&apos;m not able to repro the problem on this site with Safari 3.1.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96510</commentid>
    <comment_count>15</comment_count>
      <attachid>24640</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-24 09:26:32 -0700</bug_when>
    <thetext>Comment on attachment 24640
Improved patch for bug 18703

I think the basics of this patch are great. It can land as-is.

There are two ways I think it could be improved.

The real architecture for something like this is to make the DOM element call updateFromElement() on the renderer at the right time. This is considered better than making a specific call to the renderer, because it&apos;s up to the renderer to know what decisions it makes about the appearance based on what attributes. So instead of a call to setNeedsLayoutAndPrefWidthsRecalc, we&apos;d have a call to updateFromElement here. Then RenderTextControl::updateFromElement would get logic to notice changes in the size attribute (for HTMLInputElement) and the cols attribute (for HTMLTextAreaElement) to determine whether that will change the size. This is better encapsulation. We want the invalidation based on size to go into RenderText control because RenderTextControl::calcPrefWidths is the function that knows the algorithm for how it affects the size. Unfortunately, HTMLTextAreaElement already uses the same design you&apos;re using here, so I don&apos;t think this change makes things any worse.

So:

    1) Use updateFromElement and put the logic about exactly what the effect of this attribute it into RenderTextControl. And change HTMLTextAreaElement to call updateFromElement instead.

We want to make sure to to do recalc that&apos;s unnecessary; it&apos;s common for sites to have bugs where they repeatedly set an attribute, and we&apos;d like to minimize the work we do in cases like that.

    2) Don&apos;t do any update if the size isn&apos;t changing. This can be done most elegantly inside a RenderTextControl::updateFromElement function by remembering the old size factor value from calcPrefWidths, but it can even be done in HTMLInputElement::parseMappedAttribute by checking the old m_size value and not calling anything if it&apos;s not changing.

The test would be even better if the regression test said what it was testing in the output.

Anyway, I would have loved to see the improvements above done, but the change seems fine exactly as-is.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96533</commentid>
    <comment_count>16</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-24 11:31:42 -0700</bug_when>
    <thetext>I really dislike the updateFromElement architecture actually, since you end up checking a bunch of attributes/properties when you already know the only one that changed.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96541</commentid>
    <comment_count>17</comment_count>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-10-24 12:08:44 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I really dislike the updateFromElement architecture actually, since you end up
&gt; checking a bunch of attributes/properties when you already know the only one
&gt; that changed.
&gt; 

I&apos;m looking to make these improvements to this patch, so I&apos;m hoping to have an updated patch uploaded soon.

Does a updateSizeFromElement (or, generally, a updateXXXFromElement) make better sense, since it&apos;s specific to what has changed, but encapsulates the logic of how the renderer is updating?  Or will having a plethora of updateXXXFromElement methods open a can of worms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97049</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-29 15:06:06 -0700</bug_when>
    <thetext>I don&apos;t think this is the correct usage of the GoogleBug, which is really meant to be a bug in a high profile google web product and not a Chromium issue.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97950</commentid>
    <comment_count>19</comment_count>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-07 10:47:05 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt;     1) Use updateFromElement and put the logic about exactly what the effect of
&gt; this attribute it into RenderTextControl. And change HTMLTextAreaElement to
&gt; call updateFromElement instead.
&gt; 
&gt; We want to make sure to to do recalc that&apos;s unnecessary; it&apos;s common for sites
&gt; to have bugs where they repeatedly set an attribute, and we&apos;d like to minimize
&gt; the work we do in cases like that.
&gt; 
&gt;     2) Don&apos;t do any update if the size isn&apos;t changing. This can be done most
&gt; elegantly inside a RenderTextControl::updateFromElement function by remembering
&gt; the old size factor value from calcPrefWidths, but it can even be done in
&gt; HTMLInputElement::parseMappedAttribute by checking the old m_size value and not
&gt; calling anything if it&apos;s not changing.

I&apos;ve tried out some of the improvements above, and found two different possibilities for changing RenderTextControl that I&apos;d like your opinions about.  Both seem to work, but they both have inefficiencies that I&apos;m not ecstatic about....perhaps you can spot improvements?

1)  Adding size-change detection to HtmlInputElement and detection of size changes to updateFromElement, and if the sizes have changed, calling setNeedsLayoutAndPrefWidthsRecalc:

Added to RenderTextControl::updateFromElement:
    int old_min_width = m_minPrefWidth;
    int old_max_width = m_maxPrefWidth;
    calcPrefWidths();
    if (old_min_width != m_minPrefWidth &amp;&amp;
        old_max_width != m_maxPrefWidth)
        this-&gt;setNeedsLayoutAndPrefWidthsRecalc();

Added to HtmlInputElement::parseMappedAttribute:
        short old_size = m_size;
        m_size = !attr-&gt;isNull() ? attr-&gt;value().toInt() : 20;
        if (renderer() &amp;&amp; m_size != old_size) {
            setValueMatchesRenderer(false);
            static_cast&lt;RenderTextControl*&gt;(renderer())-&gt;updateFromElement();
        }

I don&apos;t like this because it measures the size twice and could lead to two calls to calcPrefWidths(), which is not efficient.  Is there a way in RenderTextControl to detect size changes without calculating calcPrefWidths?

2)  Adding another method to RenderTextControl that is only called when widths change, which circumvents needing to detect size changes in RenderTextControl:

Added to RenderTextControl:

void RenderTextControl::updateSizeFromElement() 
{
    setNeedsLayoutAndPrefWidthsRecalc();
    updateFromElement();
}

Added to HtmlInputElement::parseMappedAttribute:
        short old_size = m_size;
        m_size = !attr-&gt;isNull() ? attr-&gt;value().toInt() : 20;
        if (renderer() &amp;&amp; m_size != old_size) {
            setValueMatchesRenderer(false);
            static_cast&lt;RenderTextControl*&gt;(renderer())-&gt;updateSizeFromElement();
        }

I like the second option better, because it feels cleaner. However, adding another method to RenderTextControl to be called just when the object&apos;s size changes may not be ideal.  What can be done to improve this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100050</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-24 13:41:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38722</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20779</attachid>
            <date>2008-04-23 15:02:08 -0700</date>
            <delta_ts>2008-04-23 15:02:08 -0700</delta_ts>
            <desc>Try to set the &quot;size&quot; property on an input field -- has no effect in safari</desc>
            <filename>change-input-size.html</filename>
            <type>text/html</type>
            <size>402</size>
            <attacher name="Eric Roman">eroman</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8Ym9keT4NCgk8c2NyaXB0IGxhbmd1YWdlPWphdmFzY3JpcHQ+DQoJCWZ1bmN0aW9u
IGNoYW5nZUlucHV0U2l6ZSh4KSB7DQogICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGV4dEZpZWxkJyk7DQogICAgICBpbnB1dC5zaXplID0gNTU7DQoJCX0NCgk8L3Nj
cmlwdD4NCgkJPGlucHV0IHNpemU9MyBpZD10ZXh0RmllbGQgLz4NCgkJPGlucHV0IHR5cGU9YnV0
dG9uIHZhbHVlPSJleHBhbmQiIG9uY2xpY2s9ImNoYW5nZUlucHV0U2l6ZSgpIiAvPg0KICAgIDxw
PkNsaWNrICJleHBhbmQiIC0tIGluIEZGL0lFL09wZXJhIGl0IGNoYW5nZXMgdGhlIHNpemUgb2Yg
dGhlIGlucHV0IGJveC4gSW4gc2FmYXJpIGl0IGRvZXMgbm90PC9wPg0KPC9ib2R5Pg0KPC9odG1s
Pg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22803</attachid>
            <date>2008-08-14 17:30:56 -0700</date>
            <delta_ts>2008-08-21 11:41:22 -0700</delta_ts>
            <desc>Possible fix to bug 18703</desc>
            <filename>patch18703.txt</filename>
            <type>text/plain</type>
            <size>3375</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTc2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMDgtMTQgIEdsZW5uIFdpbHNvbiAgPHdpbHNvbmdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eGVkIGJ1ZyAxODcwMy4gIFRleHQgZmllbGRzIHdvdWxkIG5vdCByZXBhaW50IHRoZW1zZWx2ZXMg
YWZ0ZXIgaGF2aW5nIHRoZWlyCisgICAgICAgICJzaXplIiBhdHRyaWJ1dGVzIG1vZGlmaWVkLiAg
VGhpcyBtb2RpZmljYXRpb24gdGVsbHMgdGhlIG9iamVjdCB0byByZWNhbGN1bGF0ZSBpdHMKKyAg
ICAgICAgd2lkdGggYW5kIHJlcGFpbnQgaXRzZWxmIGlmIGl0IGlzIGEgdGV4dCBmaWVsZCBhbmQg
aXRzICJzaXplIiBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZC4KKworICAgICAgICBUZXN0czog
ZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0U2l6
ZSk6IGNoYW5nZWQgZWxlbWVudCB0byByZWNhbGN1bGF0ZSBpdHMgc2l6ZSBhbmQgcmVwYWludCBp
dHNlbGYgaWYgaXQgaXMgYSB0ZXh0IGZpZWxkCisKIDIwMDgtMDgtMTQgIEVyaWMgU2VpZGVsICA8
ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGguCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTc2NikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5MCw3ICsxNDkwLDEyIEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0TWF4TGVuZ3RoKGludCAKIAogdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpzZXRTaXplKHVuc2lnbmVkIF9zaXplKQogewotICAgIHNldEF0dHJpYnV0ZShz
aXplQXR0ciwgU3RyaW5nOjpudW1iZXIoX3NpemUpKTsKKwlzZXRBdHRyaWJ1dGUoc2l6ZUF0dHIs
IFN0cmluZzo6bnVtYmVyKF9zaXplKSk7CisJUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsK
KwlpZiAociAmJiByLT5pc1RleHRGaWVsZCgpKSB7CisJCXItPnNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOworCQlyLT5yZXBhaW50KCk7CisJfQogfQogCiBLVVJMIEhUTUxJbnB1
dEVsZW1lbnQ6OnNyYygpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNTc2NikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTA4
LTE0ICBHbGVubiBXaWxzb24gIDx3aWxzb25nQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCSAgQWRkZWQgYSBuZXcgdGV4dCB0byB2ZXJpZnkgdGhh
dCB0aGUgd2lkdGggb2YgdGV4dCBpbnB1dCBmaWVsZHMgY2FuIGJlIG1vZGlmaWVkIAorICAgICAg
ICBieSBqYXZhc2NyaXB0IHVzaW5nIHRoZSAic2l6ZSIgYXR0cmlidXRlLgorCisgICAgICAgICog
ZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvdGV4dC1maWVsZC1yZXNpemUuaHRtbDogQWRkZWQuCisKIDIwMDgtMDgtMTMgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1maWVsZC1yZXNp
emUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1m
aWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKK1NVQ0NFU1MgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3RleHQtZmllbGQtcmVz
aXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy90ZXh0LWZpZWxkLXJl
c2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90ZXh0LWZpZWxk
LXJlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACis8SFRNTD4NCis8SEVB
RD4NCis8U0NSSVBUPg0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisNCitmdW5jdGlvbiBsb2cocykNCit7
DQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUocykpOw0KK30NCisNCitmdW5jdGlvbiByZXNpemUoKSB7DQor
CXZhciBpbnB1dF9maWVsZF93aWR0aF9iZWZvcmVfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N1Y2Nlc3MnKS5jbGllbnRXaWR0aDsNCisJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N1Y2Nlc3MnKS5zaXplPTMwOw0KKwl2YXIgaW5wdXRfZmllbGRfd2lkdGhfYWZ0ZXJfcmVzaXpl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5jbGllbnRXaWR0aDsNCisJaWYo
aW5wdXRfZmllbGRfd2lkdGhfYWZ0ZXJfcmVzaXplID4gaW5wdXRfZmllbGRfd2lkdGhfYmVmb3Jl
X3Jlc2l6ZSkgew0KKwkJbG9nKCJTVUNDRVNTIik7DQorCX0gZWxzZSB7DQorCQlsb2coIkZBSUwi
KTsNCisJfQ0KK30NCis8L1NDUklQVD4NCis8L0hFQUQ+DQorPEJPRFkgb25Mb2FkPSJyZXNpemUo
KTsiPg0KKzxzcGFuIGlkPSJjb25zb2xlIj48L3NwYW4+DQorPGlucHV0IHR5cGU9InRleHQiIGlk
PSJzdWNjZXNzIiBzaXplPSIyIj4NCis8L0JPRFk+DQorPC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22922</attachid>
            <date>2008-08-21 11:41:22 -0700</date>
            <delta_ts>2008-08-21 12:54:11 -0700</delta_ts>
            <desc>Improved possible fix for bug 18703</desc>
            <filename>patch18703-2.txt</filename>
            <type>text/plain</type>
            <size>3300</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTg3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDgtMDgtMjEgIEdsZW5uIFdpbHNvbiAgPHdpbHNvbmdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eGVkIGJ1ZyAxODcwMy4gIFRleHQgZmllbGRzIHdvdWxkIG5vdCByZXBhaW50IHRoZW1zZWx2ZXMK
KyAgICAgICAgYWZ0ZXIgaGF2aW5nIHRoZWlyICJzaXplIiBhdHRyaWJ1dGVzIG1vZGlmaWVkLiAg
VGhpcyBtb2RpZmljYXRpb24gCisgICAgICAgIHRlbGxzIHRoZSBvYmplY3QgdG8gcmVjYWxjdWxh
dGUgaXRzIHdpZHRoIGFuZCByZXBhaW50IGl0c2VsZiBpZiAKKyAgICAgICAgaXQgaXMgYSB0ZXh0
IGZpZWxkIGFuZCBpdHMgInNpemUiIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2pzL3RleHQtZmllbGQtcmVzaXplLmh0bWwKKworICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTaXplKToKKwogMjAwOC0wOC0yMSAgQW50aG9ueSBSaWNhdWQgIDxyaWsyNGRAZ21h
aWwuY29tPgogCiAgICAgICAgIEFmdGVyIHRyeWluZyB0byBhZGQgdGhlIGV4cHJlc3Npb24sIHRy
eSBhZ2FpbiB3aXRoIHF1b3RlcyBmb3IKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM1ODczKQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDkxLDYgKzE0OTEsMTEgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpzZXRNYXhMZW5ndGgoaW50IAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRTaXplKHVuc2ln
bmVkIF9zaXplKQogewogICAgIHNldEF0dHJpYnV0ZShzaXplQXR0ciwgU3RyaW5nOjpudW1iZXIo
X3NpemUpKTsKKyAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOworICAgIGlmIChyICYm
IHItPmlzVGV4dEZpZWxkKCkpIHsKKyAgICAgICAgci0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lk
dGhzUmVjYWxjKCk7CisgICAgICAgIHItPnJlcGFpbnQoKTsKKyAgICB9CiB9CiAKIEtVUkwgSFRN
TElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1ODc0KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MDgtMDgtMjEgIEdsZW5uIFdpbHNvbiAgPHdpbHNvbmdAZ21haWwuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRleHQgdG8g
dmVyaWZ5IHRoYXQgdGhlIHdpZHRoIG9mIHRleHQgaW5wdXQgCisgICAgICAgIGZpZWxkcyBjYW4g
YmUgbW9kaWZpZWQgYnkgamF2YXNjcmlwdCB1c2luZyB0aGUgInNpemUiIGF0dHJpYnV0ZS4KKwor
ICAgICAgICAqIGZhc3QvanMvdGV4dC1maWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3RleHQtZmllbGQtcmVzaXplLmh0bWw6IEFkZGVkLgorCiAyMDA4
LTA4LTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmUgSHlhdHQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1m
aWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvdGV4dC1maWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1MgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3RleHQt
ZmllbGQtcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy90ZXh0
LWZpZWxkLXJlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90
ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACis8SFRN
TD4NCis8SEVBRD4NCis8U0NSSVBUPg0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
DQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisNCitmdW5jdGlvbiBs
b2cocykNCit7DQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocykpOw0KK30NCisNCitmdW5jdGlvbiByZXNp
emUoKSB7DQorCXZhciBpbnB1dF9maWVsZF93aWR0aF9iZWZvcmVfcmVzaXplID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5jbGllbnRXaWR0aDsNCisJZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3N1Y2Nlc3MnKS5zaXplPTMwOw0KKwl2YXIgaW5wdXRfZmllbGRfd2lkdGhfYWZ0
ZXJfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5jbGllbnRXaWR0
aDsNCisJaWYoaW5wdXRfZmllbGRfd2lkdGhfYWZ0ZXJfcmVzaXplID4gaW5wdXRfZmllbGRfd2lk
dGhfYmVmb3JlX3Jlc2l6ZSkgew0KKwkJbG9nKCJTVUNDRVNTIik7DQorCX0gZWxzZSB7DQorCQls
b2coIkZBSUwiKTsNCisJfQ0KK30NCis8L1NDUklQVD4NCis8L0hFQUQ+DQorPEJPRFkgb25Mb2Fk
PSJyZXNpemUoKTsiPg0KKzxzcGFuIGlkPSJjb25zb2xlIj48L3NwYW4+DQorPGlucHV0IHR5cGU9
InRleHQiIGlkPSJzdWNjZXNzIiBzaXplPSIyIj4NCis8L0JPRFk+DQorPC9IVE1MPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22923</attachid>
            <date>2008-08-21 12:54:11 -0700</date>
            <delta_ts>2008-10-23 13:22:42 -0700</delta_ts>
            <desc>Improved possible fix for bug 18703</desc>
            <filename>patch18703-3.txt</filename>
            <type>text/plain</type>
            <size>3330</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTg3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDgtMDgtMjEgIEdsZW5uIFdpbHNvbiAgPHdpbHNvbmdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eGVkIGJ1ZyAxODcwMy4gIFRleHQgZmllbGRzIHdvdWxkIG5vdCByZXBhaW50IHRoZW1zZWx2ZXMK
KyAgICAgICAgYWZ0ZXIgaGF2aW5nIHRoZWlyICJzaXplIiBhdHRyaWJ1dGVzIG1vZGlmaWVkLiAg
VGhpcyBtb2RpZmljYXRpb24gCisgICAgICAgIHRlbGxzIHRoZSBvYmplY3QgdG8gcmVjYWxjdWxh
dGUgaXRzIHdpZHRoIGFuZCByZXBhaW50IGl0c2VsZiBpZiAKKyAgICAgICAgaXQgaXMgYSB0ZXh0
IGZpZWxkIGFuZCBpdHMgInNpemUiIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2pzL3RleHQtZmllbGQtcmVzaXplLmh0bWwKKworICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTaXplKToKKwogMjAwOC0wOC0yMSAgQW50aG9ueSBSaWNhdWQgIDxyaWsyNGRAZ21h
aWwuY29tPgogCiAgICAgICAgIEFmdGVyIHRyeWluZyB0byBhZGQgdGhlIGV4cHJlc3Npb24sIHRy
eSBhZ2FpbiB3aXRoIHF1b3RlcyBmb3IKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM1ODczKQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDkxLDYgKzE0OTEsMTEgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpzZXRNYXhMZW5ndGgoaW50IAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRTaXplKHVuc2ln
bmVkIF9zaXplKQogewogICAgIHNldEF0dHJpYnV0ZShzaXplQXR0ciwgU3RyaW5nOjpudW1iZXIo
X3NpemUpKTsKKyAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOworICAgIGlmIChyICYm
IHItPmlzVGV4dEZpZWxkKCkpIHsKKyAgICAgICAgci0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lk
dGhzUmVjYWxjKCk7CisgICAgICAgIHItPnJlcGFpbnQoKTsKKyAgICB9CiB9CiAKIEtVUkwgSFRN
TElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1ODc0KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MDgtMDgtMjEgIEdsZW5uIFdpbHNvbiAgPHdpbHNvbmdAZ21haWwuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRleHQgdG8g
dmVyaWZ5IHRoYXQgdGhlIHdpZHRoIG9mIHRleHQgaW5wdXQgCisgICAgICAgIGZpZWxkcyBjYW4g
YmUgbW9kaWZpZWQgYnkgamF2YXNjcmlwdCB1c2luZyB0aGUgInNpemUiIGF0dHJpYnV0ZS4KKwor
ICAgICAgICAqIGZhc3QvanMvdGV4dC1maWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3RleHQtZmllbGQtcmVzaXplLmh0bWw6IEFkZGVkLgorCiAyMDA4
LTA4LTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmUgSHlhdHQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1m
aWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvdGV4dC1maWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1MgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3RleHQt
ZmllbGQtcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy90ZXh0
LWZpZWxkLXJlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90
ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACis8SFRN
TD4NCis8SEVBRD4NCis8U0NSSVBUPg0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
DQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisNCitmdW5jdGlvbiBs
b2cocykNCit7DQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocykpOw0KK30NCisNCitmdW5jdGlvbiByZXNp
emUoKSB7DQorICAgIHZhciBpbnB1dF9maWVsZF93aWR0aF9iZWZvcmVfcmVzaXplID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5jbGllbnRXaWR0aDsNCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5zaXplPTMwOw0KKyAgICB2YXIgaW5wdXRfZmllbGRf
d2lkdGhfYWZ0ZXJfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5j
bGllbnRXaWR0aDsNCisgICAgaWYoaW5wdXRfZmllbGRfd2lkdGhfYWZ0ZXJfcmVzaXplID4gaW5w
dXRfZmllbGRfd2lkdGhfYmVmb3JlX3Jlc2l6ZSkgew0KKyAgICAgICAgbG9nKCJTVUNDRVNTIik7
DQorICAgIH0gZWxzZSB7DQorICAgICAgICBsb2coIkZBSUwiKTsNCisgICAgfQ0KK30NCis8L1ND
UklQVD4NCis8L0hFQUQ+DQorPEJPRFkgb25Mb2FkPSJyZXNpemUoKTsiPg0KKzxzcGFuIGlkPSJj
b25zb2xlIj48L3NwYW4+DQorPGlucHV0IHR5cGU9InRleHQiIGlkPSJzdWNjZXNzIiBzaXplPSIy
Ij4NCis8L0JPRFk+DQorPC9IVE1MPg0K
</data>
<flag name="review"
          id="10196"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24610</attachid>
            <date>2008-10-23 13:22:42 -0700</date>
            <delta_ts>2008-10-23 15:07:57 -0700</delta_ts>
            <desc>Possible patch to bug 18703</desc>
            <filename>patch18703-5.txt</filename>
            <type>text/plain</type>
            <size>3949</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzY2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMTAtMTcgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHN1cHBvcnQgZm9yIHJlZHJhd2luZyBkeW5hbWljYWxseSByZXNpemVkIHRleHQgaW5w
dXQgZmllbGRzLgorCisgICAgICAgIChCdWcgMTg3MDMpCisKKyAgICAgICAgVGVzdDogZmFzdC9q
cy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorCiAyMDA4LTEwLTE3ICBL
ZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZXZpbiBPbGxpdmllcgpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDM3NjY2KQorKysgV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MCw3ICs0NjAsOCBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTCiAKICAgICBpZiAobG9jYWxO
YW1lID09IGlkQXR0ci5sb2NhbE5hbWUoKSkKICAgICAgICAgdXBkYXRlSWQob2xkID8gb2xkLT52
YWx1ZSgpIDogbnVsbEF0b20sIHZhbHVlKTsKLSAgICAKKyAgICBpZiAob2xkICYmIGxvY2FsTmFt
ZSA9PSBzaXplQXR0ci5sb2NhbE5hbWUoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgaWYgKG9sZCAmJiB2YWx1ZS5pc051bGwo
KSkKICAgICAgICAgbmFtZWRBdHRyTWFwLT5yZW1vdmVBdHRyaWJ1dGUob2xkLT5uYW1lKCkpOwog
ICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKQpAQCAtNDgwLDcgKzQ4MSw4IEBA
IHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmkKIAogICAgIGlmIChuYW1l
ID09IGlkQXR0cikKICAgICAgICAgdXBkYXRlSWQob2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0
b20sIHZhbHVlKTsKLSAgICAKKyAgICBpZiAob2xkICYmIG5hbWUgPT0gc2l6ZUF0dHIpCisgICAg
ICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAg
IGlmIChvbGQgJiYgdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3Zl
QXR0cmlidXRlKG5hbWUpOwogICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMzc2NjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOC0xMC0xNyAgR2xlbm4gV2lsc29uICA8Z3dp
bHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgd2lkdGggb2Yg
dGV4dCBpbnB1dCAKKyAgICAgICAgZmllbGRzIGNhbiBiZSBtb2RpZmllZCBieSBqYXZhc2NyaXB0
IHVzaW5nIHRoZSAic2l6ZSIgYXR0cmlidXRlLgorCisgICAgICAgIChCdWcgMTg3MDMpCisKKyAg
ICAgICAgKiBmYXN0L2pzL3RleHQtZmllbGQtcmVzaXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sOiBBZGRlZC4KKwogMjAwOC0x
MC0xNyAgUGFtZWxhIEdyZWVuZSAgPHBhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEg
bnVtYmVyIG9mIG5ldyB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1maWVs
ZC1yZXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
dGV4dC1maWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorU1VDQ0VTUworU1VDQ0VTUworIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvdGV4dC1maWVsZC1yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvdGV4dC1maWVsZC1yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NyBAQAorPEhUTUw+Cis8SEVBRD4KKzxTQ1JJUFQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rp
b24gbG9nKHMpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJi
ciIpKTsKK30KKworZnVuY3Rpb24gcmVzaXplKCkgeworICAgIHZhciBpbnB1dF9maWVsZF93aWR0
aF9iZWZvcmVfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5jbGll
bnRXaWR0aDsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnNpemU9MzA7
CisgICAgdmFyIGlucHV0X2ZpZWxkX3dpZHRoX2FmdGVyX3Jlc2l6ZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzdWNjZXNzJykuY2xpZW50V2lkdGg7CisgICAgaWYoaW5wdXRfZmllbGRfd2lk
dGhfYWZ0ZXJfcmVzaXplID4gaW5wdXRfZmllbGRfd2lkdGhfYmVmb3JlX3Jlc2l6ZSkgeworICAg
ICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsK
KyAgICB9CisgICAgaW5wdXRfZmllbGRfd2lkdGhfYmVmb3JlX3Jlc2l6ZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzdWNjZXNzJykuY2xpZW50V2lkdGg7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3N1Y2Nlc3MnKS5zZXRBdHRyaWJ1dGUoInNpemUiLCA0MCk7CisgICAgaW5wdXRf
ZmllbGRfd2lkdGhfYWZ0ZXJfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nl
c3MnKS5jbGllbnRXaWR0aDsKKyAgICBpZihpbnB1dF9maWVsZF93aWR0aF9hZnRlcl9yZXNpemUg
PiBpbnB1dF9maWVsZF93aWR0aF9iZWZvcmVfcmVzaXplKSB7CisgICAgICAgIGxvZygiU1VDQ0VT
UyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvZygiRkFJTCIpOworICAgIH0KK30KKzwvU0NS
SVBUPgorPC9IRUFEPgorPEJPRFkgb25Mb2FkPSJyZXNpemUoKTsiPgorPHNwYW4gaWQ9ImNvbnNv
bGUiPjwvc3Bhbj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3VjY2VzcyIgc2l6ZT0iMiI+Cis8
L0JPRFk+Cis8L0hUTUw+Cg==
</data>
<flag name="review"
          id="11231"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24621</attachid>
            <date>2008-10-23 15:07:57 -0700</date>
            <delta_ts>2008-10-24 08:52:51 -0700</delta_ts>
            <desc>Possible patch to bug 18703.</desc>
            <filename>patch18703-6.txt</filename>
            <type>text/plain</type>
            <size>3833</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzgyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDgtMTAtMjMgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVkIGJ1ZyAxODcwMy4gIFRleHQgZmllbGRzIHdvdWxkIG5vdCByZXBhaW50IHRoZW1zZWx2
ZXMKKyAgICAgICAgYWZ0ZXIgaGF2aW5nIHRoZWlyICJzaXplIiBhdHRyaWJ1dGVzIG1vZGlmaWVk
LiAgVGhpcyBtb2RpZmljYXRpb24gCisgICAgICAgIHRlbGxzIHRoZSBvYmplY3QgdG8gcmVjYWxj
dWxhdGUgaXRzIHdpZHRoIGFuZCByZXBhaW50IGl0c2VsZiB3aGVuIAorICAgICAgICBpdHMgInNp
emUiIGF0dHJpYnV0ZSBpcyBwYXJzZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy90ZXh0LWZp
ZWxkLXJlc2l6ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorCiAyMDA4LTEwLTIzICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIEd0ayBidWlsZCBmaXguIE5vdCByZXZpZXdlZC4KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM3ODI3KQorKysgV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsNiArNjQwLDggQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICBzZXRDaGFuZ2VkKCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpIHsKICAgICAgICAgbV9z
aXplID0gIWF0dHItPmlzTnVsbCgpID8gYXR0ci0+dmFsdWUoKS50b0ludCgpIDogMjA7CisgICAg
ICAgIGlmKHJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91
dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBh
bHRBdHRyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIGlucHV0VHlwZSgpID09IElNQUdF
KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcigpKS0+dXBk
YXRlQWx0VGV4dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzc4MjcpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOC0xMC0yMyAgR2xl
bm4gV2lsc29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGV4dCB0byB2ZXJpZnkgdGhh
dCB0aGUgd2lkdGggb2YgdGV4dCBpbnB1dCAKKyAgICAgICAgZmllbGRzIGNhbiBiZSBtb2RpZmll
ZCBieSBqYXZhc2NyaXB0IHVzaW5nIHRoZSAic2l6ZSIgYXR0cmlidXRlLgorCisgICAgICAgICog
ZmFzdC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvdGV4dC1maWVsZC1yZXNpemUuaHRtbDogQWRkZWQuCisKIDIwMDgtMTAtMjMgIEtl
dmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhhdGNoZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3RleHQtZmllbGQt
cmVzaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Rl
eHQtZmllbGQtcmVzaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvdGV4dC1maWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKK1NVQ0NFU1MKK1NVQ0NFU1MKKyAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvdGV4dC1maWVsZC1yZXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3RleHQtZmllbGQtcmVzaXplLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3RleHQtZmllbGQtcmVzaXplLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcg
QEAKKzxIVE1MPgorPEhFQUQ+Cis8U0NSSVBUPgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9u
IGxvZyhzKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocykpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KSk7Cit9CisKK2Z1bmN0aW9uIHJlc2l6ZSgpIHsKKyAgICB2YXIgaW5wdXRfZmllbGRfd2lkdGhf
YmVmb3JlX3Jlc2l6ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWNjZXNzJykuY2xpZW50
V2lkdGg7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5zaXplPTMwOwor
ICAgIHZhciBpbnB1dF9maWVsZF93aWR0aF9hZnRlcl9yZXNpemUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc3VjY2VzcycpLmNsaWVudFdpZHRoOworICAgIGlmKGlucHV0X2ZpZWxkX3dpZHRo
X2FmdGVyX3Jlc2l6ZSA+IGlucHV0X2ZpZWxkX3dpZHRoX2JlZm9yZV9yZXNpemUpIHsKKyAgICAg
ICAgbG9nKCJTVUNDRVNTIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJGQUlMIik7Cisg
ICAgfQorICAgIGlucHV0X2ZpZWxkX3dpZHRoX2JlZm9yZV9yZXNpemUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc3VjY2VzcycpLmNsaWVudFdpZHRoOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzdWNjZXNzJykuc2V0QXR0cmlidXRlKCJzaXplIiwgNDApOworICAgIGlucHV0X2Zp
ZWxkX3dpZHRoX2FmdGVyX3Jlc2l6ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWNjZXNz
JykuY2xpZW50V2lkdGg7CisgICAgaWYoaW5wdXRfZmllbGRfd2lkdGhfYWZ0ZXJfcmVzaXplID4g
aW5wdXRfZmllbGRfd2lkdGhfYmVmb3JlX3Jlc2l6ZSkgeworICAgICAgICBsb2coIlNVQ0NFU1Mi
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsKKyAgICB9Cit9Cis8L1NDUklQ
VD4KKzwvSEVBRD4KKzxCT0RZIG9uTG9hZD0icmVzaXplKCk7Ij4KKzxzcGFuIGlkPSJjb25zb2xl
Ij48L3NwYW4+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN1Y2Nlc3MiIHNpemU9IjIiPgorPC9C
T0RZPgorPC9IVE1MPgo=
</data>
<flag name="review"
          id="11239"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24640</attachid>
            <date>2008-10-24 08:52:51 -0700</date>
            <delta_ts>2008-10-24 09:26:32 -0700</delta_ts>
            <desc>Improved patch for bug 18703</desc>
            <filename>patch18703-7.txt</filename>
            <type>text/plain</type>
            <size>4114</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzgyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDgtMTAtMjMgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVkIGJ1ZyAxODcwMyAoaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg3MDMpLAorICAgICAgICAiQ2hhbmdpbmcgdGhlICdzaXplJyBwcm9wZXJ0eSBvbiBhIHRleHQg
aW5wdXQgZG9lcyBub3QgYWZmZWN0IGl0cyBsZW5ndGgiCisKKyAgICAgICAgVGV4dCBmaWVsZHMg
d291bGQgbm90IHJlcGFpbnQgdGhlbXNlbHZlcyBhZnRlciBoYXZpbmcgdGhlaXIgInNpemUiIAor
ICAgICAgICBhdHRyaWJ1dGVzIG1vZGlmaWVkLiAgVGhpcyBmaXggdGVsbHMgdGhlIG9iamVjdCB0
byByZWNhbGN1bGF0ZSBpdHMgCisgICAgICAgIHdpZHRoIGFuZCByZXBhaW50IGl0c2VsZiB3aGVu
IGl0cyAic2l6ZSIgYXR0cmlidXRlIGlzIHBhcnNlZC4KKworICAgICAgICBUZXN0OiBmYXN0L2pz
L3RleHQtZmllbGQtcmVzaXplLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisKIDIwMDgtMTAtMjMgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgR3RrIGJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzc4MjcpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw2ICs2NDAsOCBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIHNldENo
YW5nZWQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzaXplQXR0cikgewogICAg
ICAgICBtX3NpemUgPSAhYXR0ci0+aXNOdWxsKCkgPyBhdHRyLT52YWx1ZSgpLnRvSW50KCkgOiAy
MDsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBhbHRBdHRyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIGlucHV0VHlwZSgp
ID09IElNQUdFKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJl
cigpKS0+dXBkYXRlQWx0VGV4dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzc4MjcpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0x
MC0yMyAgR2xlbm4gV2lsc29uICA8Z3dpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgYnVnIDE4NzAzIChodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODcwMyksCisgICAgICAgICJDaGFu
Z2luZyB0aGUgJ3NpemUnIHByb3BlcnR5IG9uIGEgdGV4dCBpbnB1dCBkb2VzIG5vdCBhZmZlY3Qg
aXRzIGxlbmd0aCIKKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRo
ZSB3aWR0aCBvZiB0ZXh0IGlucHV0IAorICAgICAgICBmaWVsZHMgY2FuIGJlIG1vZGlmaWVkIGJ5
IGphdmFzY3JpcHQgdXNpbmcgdGhlICJzaXplIiBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBmYXN0
L2pzL3RleHQtZmllbGQtcmVzaXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS5odG1sOiBBZGRlZC4KKwogMjAwOC0xMC0yMyAgS2V2aW4g
TWNDdWxsb3VnaCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSGF0Y2hlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1maWVsZC1yZXNp
emUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvdGV4dC1m
aWVsZC1yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy90ZXh0LWZpZWxkLXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMyBAQAorU1VDQ0VTUworU1VDQ0VTUworIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy90
ZXh0LWZpZWxkLXJlc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
dGV4dC1maWVsZC1yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvdGV4dC1maWVsZC1yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAor
PEhUTUw+Cis8SEVBRD4KKzxTQ1JJUFQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbG9n
KHMpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsK
K30KKworZnVuY3Rpb24gcmVzaXplKCkgeworICAgIHZhciBpbnB1dF9maWVsZF93aWR0aF9iZWZv
cmVfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5jbGllbnRXaWR0
aDsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnNpemU9MzA7CisgICAg
dmFyIGlucHV0X2ZpZWxkX3dpZHRoX2FmdGVyX3Jlc2l6ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzdWNjZXNzJykuY2xpZW50V2lkdGg7CisgICAgaWYoaW5wdXRfZmllbGRfd2lkdGhfYWZ0
ZXJfcmVzaXplID4gaW5wdXRfZmllbGRfd2lkdGhfYmVmb3JlX3Jlc2l6ZSkgeworICAgICAgICBs
b2coIlNVQ0NFU1MiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsKKyAgICB9
CisgICAgaW5wdXRfZmllbGRfd2lkdGhfYmVmb3JlX3Jlc2l6ZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzdWNjZXNzJykuY2xpZW50V2lkdGg7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3N1Y2Nlc3MnKS5zZXRBdHRyaWJ1dGUoInNpemUiLCA0MCk7CisgICAgaW5wdXRfZmllbGRf
d2lkdGhfYWZ0ZXJfcmVzaXplID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS5j
bGllbnRXaWR0aDsKKyAgICBpZihpbnB1dF9maWVsZF93aWR0aF9hZnRlcl9yZXNpemUgPiBpbnB1
dF9maWVsZF93aWR0aF9iZWZvcmVfcmVzaXplKSB7CisgICAgICAgIGxvZygiU1VDQ0VTUyIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGxvZygiRkFJTCIpOworICAgIH0KK30KKzwvU0NSSVBUPgor
PC9IRUFEPgorPEJPRFkgb25Mb2FkPSJyZXNpemUoKTsiPgorPHNwYW4gaWQ9ImNvbnNvbGUiPjwv
c3Bhbj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3VjY2VzcyIgc2l6ZT0iMiI+Cis8L0JPRFk+
Cis8L0hUTUw+Cg==
</data>
<flag name="review"
          id="11257"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>