<?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>48189</bug_id>
          
          <creation_ts>2010-10-23 10:14:46 -0700</creation_ts>
          <short_desc>Cleanup createGlobalImageFileDescriptor in ClipboardWin</short_desc>
          <delta_ts>2010-11-02 12:07:57 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>48412</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>298420</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-23 10:14:46 -0700</bug_when>
    <thetext>see patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298422</commentid>
    <comment_count>1</comment_count>
      <attachid>71645</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-23 10:20:23 -0700</bug_when>
    <thetext>Created attachment 71645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300130</commentid>
    <comment_count>2</comment_count>
      <attachid>71645</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-27 04:57:13 -0700</bug_when>
    <thetext>Comment on attachment 71645
Patch

I think this patch would be a lot easier to review if you were to clean up createGlobalUrlFileDescriptor and createGlobalURLContent without merging them into writeURL (maybe even with a separate patch for each), and then merge them into writeURL. As it currently stands there&apos;s so much changing at once that it&apos;s hard to verify that the result is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300217</commentid>
    <comment_count>3</comment_count>
      <attachid>72035</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-27 07:58:33 -0700</bug_when>
    <thetext>Created attachment 72035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300243</commentid>
    <comment_count>4</comment_count>
      <attachid>72035</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-27 08:33:00 -0700</bug_when>
    <thetext>Comment on attachment 72035
Patch

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

&gt; WebCore/platform/win/ClipboardWin.cpp:727
&gt; +    CString content = makeString(&quot;[InternetShortcut]\r\nURL=&quot;, url, &quot;\r\n&quot;).ascii();

This doesn&apos;t do the same thing that the old code did. The old code converted from UTF-16 to a multi-byte string using the current code page, while this converts from UTF-16 to ASCII. That seems wrong if the URL contains non-ASCII characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300246</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-27 08:37:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 72035 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72035&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/win/ClipboardWin.cpp:727
&gt; &gt; +    CString content = makeString(&quot;[InternetShortcut]\r\nURL=&quot;, url, &quot;\r\n&quot;).ascii();
&gt; 
&gt; This doesn&apos;t do the same thing that the old code did. The old code converted from UTF-16 to a multi-byte string using the current code page, while this converts from UTF-16 to ASCII. That seems wrong if the URL contains non-ASCII characters.
Isn&apos;t the url.string() percent encoded? So i should contain only ASCII by default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301286</commentid>
    <comment_count>6</comment_count>
      <attachid>72035</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-28 13:28:39 -0700</bug_when>
    <thetext>Comment on attachment 72035
Patch

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

&gt; WebCore/platform/win/ClipboardWin.cpp:725
&gt;      int estimatedSize = 0;

Looks like you can get rid of this variable now.

&gt;&gt;&gt; WebCore/platform/win/ClipboardWin.cpp:727
&gt;&gt;&gt; +    CString content = makeString(&quot;[InternetShortcut]\r\nURL=&quot;, url, &quot;\r\n&quot;).ascii();
&gt;&gt; 
&gt;&gt; This doesn&apos;t do the same thing that the old code did. The old code converted from UTF-16 to a multi-byte string using the current code page, while this converts from UTF-16 to ASCII. That seems wrong if the URL contains non-ASCII characters.
&gt; 
&gt; Isn&apos;t the url.string() percent encoded? So i should contain only ASCII by default?

Yes, it looks like it is. Is there an assertion we can add that says that url is all-ASCII? (Seems like that should be pretty easy.) It would be good to add a comment at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301941</commentid>
    <comment_count>7</comment_count>
      <attachid>72035</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-29 12:15:14 -0700</bug_when>
    <thetext>Comment on attachment 72035
Patch

Clearing flags on attachment: 72035

Manually committed r70914: &lt;http://trac.webkit.org/changeset/70914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301964</commentid>
    <comment_count>8</comment_count>
      <attachid>72370</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-29 12:28:43 -0700</bug_when>
    <thetext>Created attachment 72370
Patch (part 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302922</commentid>
    <comment_count>9</comment_count>
      <attachid>72370</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-11-01 14:14:25 -0700</bug_when>
    <thetext>Comment on attachment 72370
Patch (part 2)

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

&gt; WebCore/platform/win/ClipboardWin.cpp:695
&gt; +    FILEGROUPDESCRIPTOR* fgd = reinterpret_cast&lt;FILEGROUPDESCRIPTOR*&gt;(GlobalLock(urlFileDescriptor));

static_cast would be better here...

&gt; WebCore/platform/win/ClipboardWin.cpp:705
&gt; +    char* fileContents = reinterpret_cast&lt;char*&gt;(GlobalLock(urlFileContent));

...and here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302950</commentid>
    <comment_count>10</comment_count>
      <attachid>72564</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-11-01 14:44:49 -0700</bug_when>
    <thetext>Created attachment 72564
Patch (part 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303537</commentid>
    <comment_count>11</comment_count>
      <attachid>72564</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-02 12:07:51 -0700</bug_when>
    <thetext>Comment on attachment 72564
Patch (part 2)

Clearing flags on attachment: 72564

Committed r71145: &lt;http://trac.webkit.org/changeset/71145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303538</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-02 12:07:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71645</attachid>
            <date>2010-10-23 10:20:23 -0700</date>
            <delta_ts>2010-10-27 07:58:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48189.patch</filename>
            <type>text/plain</type>
            <size>6121</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWViNDk4My4uNjNjZDcxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDbGVhbnVwIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IgaW4gQ2xpcGJvYXJkV2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODE4OQorCisgICAgICAgIE1lcmdlIGNyZWF0ZUdsb2JhbFVSTENvbnRlbnQg
YW5kIGNyZWF0ZUdsb2JhbFVybEZpbGVEZXNjcmlwdG9yIGludG8KKyAgICAgICAgY3JlYXRlR2xv
YmFsSW1hZ2VGaWxlRGVzY3JpcHRvciBhbmQgcG9ydCBpdCB0byBXaW5DRS4KKworICAgICAgICAq
IHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisKIDIwMTAtMTAtMjIgIFBhdHJpY2sgR2Fuc3Rl
cmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDdhNTQ3MzcuLjlkZDJiODAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUg
PHdpbmluZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
NjQsOSArNjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLS8vIGZvcm1hdCBzdHJpbmcgZm9yIAotc3RhdGljIGNvbnN0IGNoYXIgc3pTaGVs
bERvdFVybFRlbXBsYXRlW10gPSAiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0lc1xyXG4iOwot
CiAvLyBXZSBwcm92aWRlIHRoZSBJRSBjbGlwYm9hcmQgdHlwZXMgKFVSTCBhbmQgVGV4dCksIGFu
ZCB0aGUgY2xpcGJvYXJkIHR5cGVzIHNwZWNpZmllZCBpbiB0aGUgV0hBVFdHIFdlYiBBcHBsaWNh
dGlvbnMgMS4wIGRyYWZ0CiAvLyBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8gU2VjdGlvbiA2LjMuNS4zCiAKQEAgLTE2Myw0MiArMTYxLDYgQEAg
c3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxVUkxDb250ZW50KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgZXN0
aW1hdGVkRmlsZVNpemUpCi17Ci0gICAgSFJFU1VMVCBociA9IFNfT0s7Ci0gICAgSEdMT0JBTCBt
ZW1PYmogPSAwOwotCi0gICAgY2hhciogZmlsZUNvbnRlbnRzOwotICAgIGNoYXIgYW5zaVVybFtJ
TlRFUk5FVF9NQVhfVVJMX0xFTkdUSCArIDFdOwotICAgIC8vIFVzZWQgdG8gZ2VuZXJhdGUgdGhl
IGJ1ZmZlci4gVGhpcyBpcyBudWxsIHRlcm1pbmF0ZWQgd2hlcmVhcyB0aGUgZmlsZUNvbnRlbnRz
IHdvbid0IGJlLgotICAgIGNoYXIgY29udGVudEdlbmVyYXRpb25CdWZmZXJbSU5URVJORVRfTUFY
X1VSTF9MRU5HVEggKyBBUlJBWVNJWkUoc3pTaGVsbERvdFVybFRlbXBsYXRlKSArIDFdOwotICAg
IAotICAgIGlmIChlc3RpbWF0ZWRGaWxlU2l6ZSA+IDAgJiYgZXN0aW1hdGVkRmlsZVNpemUgPiBB
UlJBWVNJWkUoY29udGVudEdlbmVyYXRpb25CdWZmZXIpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGludCBhbnNpVXJsU2l6ZSA9IDo6V2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIChM
UENXU1RSKXVybC5jaGFyYWN0ZXJzKCksIHVybC5sZW5ndGgoKSwgYW5zaVVybCwgQVJSQVlTSVpF
KGFuc2lVcmwpIC0gMSwgMCwgMCk7Ci0gICAgaWYgKCFhbnNpVXJsU2l6ZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBhbnNpVXJsW2Fuc2lVcmxTaXplXSA9IDA7Ci0gICAgCi0gICAgaW50IGZp
bGVTaXplID0gKGludCkgKGFuc2lVcmxTaXplK3N0cmxlbihzelNoZWxsRG90VXJsVGVtcGxhdGUp
LTIpOyAvLyAtMiB0byByZW1vdmUgdGhlICVzCi0gICAgQVNTRVJUKGVzdGltYXRlZEZpbGVTaXpl
IDwgMCB8fCBmaWxlU2l6ZSA9PSBlc3RpbWF0ZWRGaWxlU2l6ZSk7Ci0KLSAgICBtZW1PYmogPSBH
bG9iYWxBbGxvYyhHUFRSLCBmaWxlU2l6ZSk7Ci0gICAgaWYgKCFtZW1PYmopIAotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGZpbGVDb250ZW50cyA9IChQU1RSKUdsb2JhbExvY2sobWVtT2JqKTsK
LQotICAgIHNwcmludGZfcyhjb250ZW50R2VuZXJhdGlvbkJ1ZmZlciwgQVJSQVlTSVpFKGNvbnRl
bnRHZW5lcmF0aW9uQnVmZmVyKSwgc3pTaGVsbERvdFVybFRlbXBsYXRlLCBhbnNpVXJsKTsKLSAg
ICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgY29udGVudEdlbmVyYXRpb25CdWZmZXIsIGZpbGVT
aXplKTsKLSAgICAKLSAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKLSAgICAKLSAgICByZXR1cm4g
bWVtT2JqOwotfQotCiBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50
KFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9j
KEdQVFIsIGRhdGEtPnNpemUoKSk7CkBAIC0yNzcsMzkgKzIzOSw2IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5h
bWUsIFNoYXJlCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRl
R2xvYmFsVXJsRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGludCYgLypvdXQqLyBlc3RpbWF0ZWRTaXplKQotewotICAgIEhSRVNVTFQgaHIgPSBT
X09LOwotICAgIEhHTE9CQUwgbWVtT2JqID0gMDsKLSAgICBTdHJpbmcgZnNQYXRoOwotICAgIG1l
bU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIHNpemVvZihGSUxFR1JPVVBERVNDUklQVE9SKSk7Ci0g
ICAgaWYgKCFtZW1PYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRklMRUdST1VQREVTQ1JJ
UFRPUiogZmdkID0gKEZJTEVHUk9VUERFU0NSSVBUT1IqKUdsb2JhbExvY2sobWVtT2JqKTsKLSAg
ICBtZW1zZXQoZmdkLCAwLCBzaXplb2YoRklMRUdST1VQREVTQ1JJUFRPUikpOwotICAgIGZnZC0+
Y0l0ZW1zID0gMTsKLSAgICBmZ2QtPmZnZFswXS5kd0ZsYWdzID0gRkRfRklMRVNJWkU7Ci0gICAg
aW50IGZpbGVTaXplID0gOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgdXJsLmNoYXJh
Y3RlcnMoKSwgdXJsLmxlbmd0aCgpLCAwLCAwLCAwLCAwKTsKLSAgICBmaWxlU2l6ZSArPSBzdHJs
ZW4oc3pTaGVsbERvdFVybFRlbXBsYXRlKSAtIDI7IC8vIC0yIGlzIGZvciBnZXR0aW5nIHJpZCBv
ZiAlcyBpbiB0aGUgdGVtcGxhdGUgc3RyaW5nCi0gICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93
ID0gZmlsZVNpemU7Ci0gICAgZXN0aW1hdGVkU2l6ZSA9IGZpbGVTaXplOwotICAgIGZzUGF0aCA9
IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRsZSwgTCIuVVJMIiwgdHJ1ZSk7
Ci0KLSAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKLSAgICAgICAgR2xvYmFsVW5sb2Nr
KG1lbU9iaik7Ci0gICAgICAgIEdsb2JhbEZyZWUobWVtT2JqKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgaW50IG1heFNpemUgPSBtaW4oZnNQYXRoLmxlbmd0aCgpLCBBUlJBWVNJ
WkUoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAgQ29weU1lbW9yeShmZ2QtPmZnZFswXS5j
RmlsZU5hbWUsIChMUENXU1RSKWZzUGF0aC5jaGFyYWN0ZXJzKCksIG1heFNpemUgKiBzaXplb2Yo
VUNoYXIpKTsKLSAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKLSAgICAKLSAgICByZXR1cm4gbWVt
T2JqOwotfQotCi0KIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIENhY2hlZEltYWdlKiBp
bWFnZSkKIHsKICAgICBBU1NFUlRfQVJHKGltYWdlLCBpbWFnZSk7CkBAIC03NDQsMTcgKzY3Mywz
NyBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVVUkwoY29uc3QgS1VSTCYga3VybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqKQogICAgICAgICAgcmV0dXJuOwogICAgIFdlYkNvcmU6
OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBrdXJsLCB0aXRsZVN0ciwgdHJ1
ZSwgdHJ1ZSk7CiAKLSAgICBpbnQgZXN0aW1hdGVkU2l6ZSA9IDA7CiAgICAgU3RyaW5nIHVybCA9
IGt1cmwuc3RyaW5nKCk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVy
bE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7CisgICAgQ1N0cmluZyBjb250
ZW50ID0gbWFrZVN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iLCB1cmwsICJcclxu
IikuYXNjaWkoKTsKKworICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgSEdMT0JBTCB1cmxGaWxlRGVzY3JpcHRvciA9IGNyZWF0ZUdsb2JhbFVybEZp
bGVEZXNjcmlwdG9yKHVybCwgdGl0bGVTdHIsIGVzdGltYXRlZFNpemUpOworICAgIEhHTE9CQUwg
dXJsRmlsZURlc2NyaXB0b3IgPSBHbG9iYWxBbGxvYyhHUFRSLCBzaXplb2YoRklMRUdST1VQREVT
Q1JJUFRPUikpOwogICAgIGlmICghdXJsRmlsZURlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsK
LSAgICBIR0xPQkFMIHVybEZpbGVDb250ZW50ID0gY3JlYXRlR2xvYmFsVVJMQ29udGVudCh1cmws
IGVzdGltYXRlZFNpemUpOworCisgICAgSEdMT0JBTCB1cmxGaWxlQ29udGVudCA9IEdsb2JhbEFs
bG9jKEdQVFIsIGNvbnRlbnQubGVuZ3RoKCkpOwogICAgIGlmICghdXJsRmlsZUNvbnRlbnQpIHsK
ICAgICAgICAgR2xvYmFsRnJlZSh1cmxGaWxlRGVzY3JpcHRvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBGSUxFR1JPVVBERVNDUklQVE9SKiBmZ2QgPSByZWludGVycHJldF9jYXN0
PEZJTEVHUk9VUERFU0NSSVBUT1IqPihHbG9iYWxMb2NrKHVybEZpbGVEZXNjcmlwdG9yKSk7Cisg
ICAgWmVyb01lbW9yeShmZ2QsIHNpemVvZihGSUxFR1JPVVBERVNDUklQVE9SKSk7CisgICAgZmdk
LT5jSXRlbXMgPSAxOworICAgIGZnZC0+ZmdkWzBdLmR3RmxhZ3MgPSBGRF9GSUxFU0laRTsKKyAg
ICBmZ2QtPmZnZFswXS5uRmlsZVNpemVMb3cgPSBjb250ZW50Lmxlbmd0aCgpOworCisgICAgdW5z
aWduZWQgbWF4U2l6ZSA9IG1pbihmc1BhdGgubGVuZ3RoKCksIEFSUkFZU0laRShmZ2QtPmZnZFsw
XS5jRmlsZU5hbWUpKTsKKyAgICBDb3B5TWVtb3J5KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSwgZnNQ
YXRoLmNoYXJhY3RlcnMoKSwgbWF4U2l6ZSAqIHNpemVvZihVQ2hhcikpOworICAgIEdsb2JhbFVu
bG9jayh1cmxGaWxlRGVzY3JpcHRvcik7CisKKyAgICBjaGFyKiBmaWxlQ29udGVudHMgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihHbG9iYWxMb2NrKHVybEZpbGVDb250ZW50KSk7CisgICAgQ29w
eU1lbW9yeShmaWxlQ29udGVudHMsIGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxlbmd0aCgpKTsK
KyAgICBHbG9iYWxVbmxvY2sodXJsRmlsZUNvbnRlbnQpOworCiAgICAgd3JpdGVGaWxlVG9EYXRh
T2JqZWN0KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCB1cmxGaWxlRGVzY3JpcHRvciwgdXJs
RmlsZUNvbnRlbnQsIDApOwogfQogCg==
</data>
<flag name="review"
          id="61741"
          type_id="1"
          status="-"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="61742"
          type_id="3"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72035</attachid>
            <date>2010-10-27 07:58:33 -0700</date>
            <delta_ts>2010-10-29 12:15:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48189a.patch</filename>
            <type>text/plain</type>
            <size>4734</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGU2MmYzMi4uMTI3NTZkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMC0yNyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDbGVhbnVwIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IgaW4gQ2xpcGJvYXJkV2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODE4OQorCisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxVUkxDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUdsb2JhbFVybEZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZFdpbjo6d3JpdGVVUkwpOgorCiAyMDEwLTEwLTI3ICBNYXJpbyBTYW5jaGV6
IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRX
aW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCA3YTU0
NzM3Li5kODQ4ZjVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRX
aW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3aW5pbmV0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC02NCw5ICs2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotLy8gZm9ybWF0IHN0cmluZyBmb3IgCi1z
dGF0aWMgY29uc3QgY2hhciBzelNoZWxsRG90VXJsVGVtcGxhdGVbXSA9ICJbSW50ZXJuZXRTaG9y
dGN1dF1cclxuVVJMPSVzXHJcbiI7Ci0KIC8vIFdlIHByb3ZpZGUgdGhlIElFIGNsaXBib2FyZCB0
eXBlcyAoVVJMIGFuZCBUZXh0KSwgYW5kIHRoZSBjbGlwYm9hcmQgdHlwZXMgc3BlY2lmaWVkIGlu
IHRoZSBXSEFUV0cgV2ViIEFwcGxpY2F0aW9ucyAxLjAgZHJhZnQKIC8vIHNlZSBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyBTZWN0aW9uIDYuMy41LjMK
IApAQCAtMTYzLDM2ICsxNjEsMTkgQEAgc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21V
cmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxVUkxDb250ZW50KGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgZXN0aW1hdGVkRmlsZVNpemUpCitzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxVUkxDb250ZW50KGNvbnN0IENTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgSFJF
U1VMVCBociA9IFNfT0s7CiAgICAgSEdMT0JBTCBtZW1PYmogPSAwOwogCiAgICAgY2hhciogZmls
ZUNvbnRlbnRzOwotICAgIGNoYXIgYW5zaVVybFtJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSCArIDFd
OwotICAgIC8vIFVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJ1ZmZlci4gVGhpcyBpcyBudWxsIHRlcm1p
bmF0ZWQgd2hlcmVhcyB0aGUgZmlsZUNvbnRlbnRzIHdvbid0IGJlLgotICAgIGNoYXIgY29udGVu
dEdlbmVyYXRpb25CdWZmZXJbSU5URVJORVRfTUFYX1VSTF9MRU5HVEggKyBBUlJBWVNJWkUoc3pT
aGVsbERvdFVybFRlbXBsYXRlKSArIDFdOwotICAgIAotICAgIGlmIChlc3RpbWF0ZWRGaWxlU2l6
ZSA+IDAgJiYgZXN0aW1hdGVkRmlsZVNpemUgPiBBUlJBWVNJWkUoY29udGVudEdlbmVyYXRpb25C
dWZmZXIpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGludCBhbnNpVXJsU2l6ZSA9IDo6V2lk
ZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIChMUENXU1RSKXVybC5jaGFyYWN0ZXJzKCksIHVy
bC5sZW5ndGgoKSwgYW5zaVVybCwgQVJSQVlTSVpFKGFuc2lVcmwpIC0gMSwgMCwgMCk7Ci0gICAg
aWYgKCFhbnNpVXJsU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBhbnNpVXJsW2Fuc2lV
cmxTaXplXSA9IDA7Ci0gICAgCi0gICAgaW50IGZpbGVTaXplID0gKGludCkgKGFuc2lVcmxTaXpl
K3N0cmxlbihzelNoZWxsRG90VXJsVGVtcGxhdGUpLTIpOyAvLyAtMiB0byByZW1vdmUgdGhlICVz
Ci0gICAgQVNTRVJUKGVzdGltYXRlZEZpbGVTaXplIDwgMCB8fCBmaWxlU2l6ZSA9PSBlc3RpbWF0
ZWRGaWxlU2l6ZSk7CiAKLSAgICBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRSLCBmaWxlU2l6ZSk7
CisgICAgbWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwgY29udGVudC5sZW5ndGgoKSk7CiAgICAg
aWYgKCFtZW1PYmopIAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZpbGVDb250ZW50cyA9IChQ
U1RSKUdsb2JhbExvY2sobWVtT2JqKTsKLQotICAgIHNwcmludGZfcyhjb250ZW50R2VuZXJhdGlv
bkJ1ZmZlciwgQVJSQVlTSVpFKGNvbnRlbnRHZW5lcmF0aW9uQnVmZmVyKSwgc3pTaGVsbERvdFVy
bFRlbXBsYXRlLCBhbnNpVXJsKTsKLSAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgY29udGVu
dEdlbmVyYXRpb25CdWZmZXIsIGZpbGVTaXplKTsKKyAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50
cywgY29udGVudC5kYXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwogICAgIAogICAgIEdsb2JhbFVu
bG9jayhtZW1PYmopOwogICAgIApAQCAtMjc3LDcgKzI1OCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUs
IFNoYXJlCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsVXJsRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGludCYgLypvdXQqLyBlc3RpbWF0ZWRTaXplKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsVXJsRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IENTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAg
ICAgSEdMT0JBTCBtZW1PYmogPSAwOwpAQCAtMjkwLDEwICsyNzEsNyBAQCBzdGF0aWMgSEdMT0JB
TCBjcmVhdGVHbG9iYWxVcmxGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aQogICAgIG1lbXNldChmZ2QsIDAsIHNpemVvZihGSUxFR1JPVVBERVNDUklQVE9S
KSk7CiAgICAgZmdkLT5jSXRlbXMgPSAxOwogICAgIGZnZC0+ZmdkWzBdLmR3RmxhZ3MgPSBGRF9G
SUxFU0laRTsKLSAgICBpbnQgZmlsZVNpemUgPSA6OldpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQ
LCAwLCB1cmwuY2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCksIDAsIDAsIDAsIDApOwotICAgIGZp
bGVTaXplICs9IHN0cmxlbihzelNoZWxsRG90VXJsVGVtcGxhdGUpIC0gMjsgLy8gLTIgaXMgZm9y
IGdldHRpbmcgcmlkIG9mICVzIGluIHRoZSB0ZW1wbGF0ZSBzdHJpbmcKLSAgICBmZ2QtPmZnZFsw
XS5uRmlsZVNpemVMb3cgPSBmaWxlU2l6ZTsKLSAgICBlc3RpbWF0ZWRTaXplID0gZmlsZVNpemU7
CisgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5ndGgoKTsKICAgICBm
c1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgdGl0bGUsIEwiLlVSTCIs
IHRydWUpOwogCiAgICAgaWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKSB7CkBAIC03NDYsMTEgKzcy
NCwxMiBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVVUkwoY29uc3QgS1VSTCYga3VybCwgY29u
c3QgU3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqKQogCiAgICAgaW50IGVzdGltYXRlZFNpemUgPSAw
OwogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOworICAgIENTdHJpbmcgY29udGVudCA9
IG1ha2VTdHJpbmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiwgdXJsLCAiXHJcbiIpLmFz
Y2lpKCk7CiAKLSAgICBIR0xPQkFMIHVybEZpbGVEZXNjcmlwdG9yID0gY3JlYXRlR2xvYmFsVXJs
RmlsZURlc2NyaXB0b3IodXJsLCB0aXRsZVN0ciwgZXN0aW1hdGVkU2l6ZSk7CisgICAgSEdMT0JB
TCB1cmxGaWxlRGVzY3JpcHRvciA9IGNyZWF0ZUdsb2JhbFVybEZpbGVEZXNjcmlwdG9yKHVybCwg
dGl0bGVTdHIsIGNvbnRlbnQpOwogICAgIGlmICghdXJsRmlsZURlc2NyaXB0b3IpCiAgICAgICAg
IHJldHVybjsKLSAgICBIR0xPQkFMIHVybEZpbGVDb250ZW50ID0gY3JlYXRlR2xvYmFsVVJMQ29u
dGVudCh1cmwsIGVzdGltYXRlZFNpemUpOworICAgIEhHTE9CQUwgdXJsRmlsZUNvbnRlbnQgPSBj
cmVhdGVHbG9iYWxVUkxDb250ZW50KGNvbnRlbnQpOwogICAgIGlmICghdXJsRmlsZUNvbnRlbnQp
IHsKICAgICAgICAgR2xvYmFsRnJlZSh1cmxGaWxlRGVzY3JpcHRvcik7CiAgICAgICAgIHJldHVy
bjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72370</attachid>
            <date>2010-10-29 12:28:43 -0700</date>
            <delta_ts>2010-11-01 14:44:49 -0700</delta_ts>
            <desc>Patch (part 2)</desc>
            <filename>bug-48189-2.patch</filename>
            <type>text/plain</type>
            <size>4422</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcwOTE0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0yOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDbGVhbnVwIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IgaW4gQ2xpcGJvYXJk
V2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODE4
OQorCisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRXaW46OndyaXRlVVJMKToKKwogMjAxMC0xMC0yOSAgUGF0cmljayBH
YW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAJKHJldmlz
aW9uIDcwOTE0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogI2luY2x1ZGUgPHdpbmluZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+IAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMTYxLDI1ICsxNjEsNiBAQCBzdGF0aWMgU3RyaW5nIGZp
bGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsVVJMQ29udGVudChjb25zdCBDU3RyaW5nJiBjb250ZW50KQot
ewotICAgIEhSRVNVTFQgaHIgPSBTX09LOwotICAgIEhHTE9CQUwgbWVtT2JqID0gMDsKLQotICAg
IGNoYXIqIGZpbGVDb250ZW50czsKLQotICAgIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGNv
bnRlbnQubGVuZ3RoKCkpOwotICAgIGlmICghbWVtT2JqKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBmaWxlQ29udGVudHMgPSAoUFNUUilHbG9iYWxMb2NrKG1lbU9iaik7Ci0gICAgQ29weU1l
bW9yeShmaWxlQ29udGVudHMsIGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxlbmd0aCgpKTsKLSAg
ICAKLSAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKLSAgICAKLSAgICByZXR1cm4gbWVtT2JqOwot
fQotCiBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRh
dGEtPnNpemUoKSk7CkBAIC0yNTgsMzYgKzIzOSw2IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEhEcm9wQ29udGVudCgKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JB
TCBjcmVhdGVHbG9iYWxVcmxGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgQ1N0cmluZyYgY29udGVudCkKLXsKLSAgICBIUkVTVUxUIGhy
ID0gU19PSzsKLSAgICBIR0xPQkFMIG1lbU9iaiA9IDA7Ci0gICAgU3RyaW5nIGZzUGF0aDsKLSAg
ICBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRSLCBzaXplb2YoRklMRUdST1VQREVTQ1JJUFRPUikp
OwotICAgIGlmICghbWVtT2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEZJTEVHUk9VUERF
U0NSSVBUT1IqIGZnZCA9IChGSUxFR1JPVVBERVNDUklQVE9SKilHbG9iYWxMb2NrKG1lbU9iaik7
Ci0gICAgbWVtc2V0KGZnZCwgMCwgc2l6ZW9mKEZJTEVHUk9VUERFU0NSSVBUT1IpKTsKLSAgICBm
Z2QtPmNJdGVtcyA9IDE7Ci0gICAgZmdkLT5mZ2RbMF0uZHdGbGFncyA9IEZEX0ZJTEVTSVpFOwot
ICAgIGZnZC0+ZmdkWzBdLm5GaWxlU2l6ZUxvdyA9IGNvbnRlbnQubGVuZ3RoKCk7Ci0gICAgZnNQ
YXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlLCBMIi5VUkwiLCB0
cnVlKTsKLQotICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewotICAgICAgICBHbG9iYWxV
bmxvY2sobWVtT2JqKTsKLSAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBpbnQgbWF4U2l6ZSA9IG1pbihmc1BhdGgubGVuZ3RoKCksIEFS
UkFZU0laRShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKLSAgICBDb3B5TWVtb3J5KGZnZC0+Zmdk
WzBdLmNGaWxlTmFtZSwgKExQQ1dTVFIpZnNQYXRoLmNoYXJhY3RlcnMoKSwgbWF4U2l6ZSAqIHNp
emVvZihVQ2hhcikpOwotICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwotICAgIAotICAgIHJldHVy
biBtZW1PYmo7Ci19Ci0KLQogc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVz
Y3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ2FjaGVkSW1h
Z2UqIGltYWdlKQogewogICAgIEFTU0VSVF9BUkcoaW1hZ2UsIGltYWdlKTsKQEAgLTcyNSwxNiAr
Njc2LDM2IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjp3cml0ZVVSTChjb25zdCBLVVJMJiAKICAgICBT
dHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmNvbnRhaW5zT25seUFT
Q0lJKCkpOyAvLyBLVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAorICAgIFN0cmluZyBm
c1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgdGl0bGVTdHIsIEwiLlVS
TCIsIHRydWUpOwogICAgIENTdHJpbmcgY29udGVudCA9IG1ha2VTdHJpbmcoIltJbnRlcm5ldFNo
b3J0Y3V0XVxyXG5VUkw9IiwgdXJsLCAiXHJcbiIpLmFzY2lpKCk7CiAKLSAgICBIR0xPQkFMIHVy
bEZpbGVEZXNjcmlwdG9yID0gY3JlYXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0b3IodXJsLCB0aXRs
ZVN0ciwgY29udGVudCk7CisgICAgaWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBIR0xPQkFMIHVybEZpbGVEZXNjcmlwdG9yID0gR2xvYmFsQWxsb2MoR1BU
Uiwgc2l6ZW9mKEZJTEVHUk9VUERFU0NSSVBUT1IpKTsKICAgICBpZiAoIXVybEZpbGVEZXNjcmlw
dG9yKQogICAgICAgICByZXR1cm47Ci0gICAgSEdMT0JBTCB1cmxGaWxlQ29udGVudCA9IGNyZWF0
ZUdsb2JhbFVSTENvbnRlbnQoY29udGVudCk7CisKKyAgICBIR0xPQkFMIHVybEZpbGVDb250ZW50
ID0gR2xvYmFsQWxsb2MoR1BUUiwgY29udGVudC5sZW5ndGgoKSk7CiAgICAgaWYgKCF1cmxGaWxl
Q29udGVudCkgewogICAgICAgICBHbG9iYWxGcmVlKHVybEZpbGVEZXNjcmlwdG9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworICAgIEZJTEVHUk9VUERFU0NSSVBUT1IqIGZnZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RklMRUdST1VQREVTQ1JJUFRPUio+KEdsb2JhbExvY2sodXJsRmlsZURlc2Ny
aXB0b3IpKTsKKyAgICBaZXJvTWVtb3J5KGZnZCwgc2l6ZW9mKEZJTEVHUk9VUERFU0NSSVBUT1Ip
KTsKKyAgICBmZ2QtPmNJdGVtcyA9IDE7CisgICAgZmdkLT5mZ2RbMF0uZHdGbGFncyA9IEZEX0ZJ
TEVTSVpFOworICAgIGZnZC0+ZmdkWzBdLm5GaWxlU2l6ZUxvdyA9IGNvbnRlbnQubGVuZ3RoKCk7
CisKKyAgICB1bnNpZ25lZCBtYXhTaXplID0gbWluKGZzUGF0aC5sZW5ndGgoKSwgQVJSQVlTSVpF
KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIENvcHlNZW1vcnkoZmdkLT5mZ2RbMF0uY0Zp
bGVOYW1lLCBmc1BhdGguY2hhcmFjdGVycygpLCBtYXhTaXplICogc2l6ZW9mKFVDaGFyKSk7Cisg
ICAgR2xvYmFsVW5sb2NrKHVybEZpbGVEZXNjcmlwdG9yKTsKKworICAgIGNoYXIqIGZpbGVDb250
ZW50cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQp
KTsKKyAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgY29udGVudC5kYXRhKCksIGNvbnRlbnQu
bGVuZ3RoKCkpOworICAgIEdsb2JhbFVubG9jayh1cmxGaWxlQ29udGVudCk7CisKICAgICB3cml0
ZUZpbGVUb0RhdGFPYmplY3QobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIHVybEZpbGVEZXNj
cmlwdG9yLCB1cmxGaWxlQ29udGVudCwgMCk7CiB9CiAK
</data>
<flag name="review"
          id="62609"
          type_id="1"
          status="+"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="62610"
          type_id="3"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72564</attachid>
            <date>2010-11-01 14:44:49 -0700</date>
            <delta_ts>2010-11-02 12:07:51 -0700</delta_ts>
            <desc>Patch (part 2)</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>4537</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcwOTE0KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDEzIEBADQorMjAxMC0xMC0yOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uDQorDQor
ICAgICAgICBDbGVhbnVwIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IgaW4gQ2xpcGJv
YXJkV2luDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDgxODkNCisNCisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6DQorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVVSTCk6DQorDQogMjAxMC0xMC0yOSAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4NCiANCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gUm9iZW4uDQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5jcHAJKHJldmlzaW9uIDcwOTE0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC01Niw3ICs1Niw3IEBADQogI2luY2x1ZGUgPHdp
bmluZXQuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+DQotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+IA0KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPg0KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+DQogDQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCkBAIC0xNjEsMjUgKzE2
MSw2IEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXQNCiAgICAgcmV0
dXJuIHJlc3VsdDsNCiB9DQogDQotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsVVJMQ29udGVu
dChjb25zdCBDU3RyaW5nJiBjb250ZW50KQ0KLXsNCi0gICAgSFJFU1VMVCBociA9IFNfT0s7DQot
ICAgIEhHTE9CQUwgbWVtT2JqID0gMDsNCi0NCi0gICAgY2hhciogZmlsZUNvbnRlbnRzOw0KLQ0K
LSAgICBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRSLCBjb250ZW50Lmxlbmd0aCgpKTsNCi0gICAg
aWYgKCFtZW1PYmopIA0KLSAgICAgICAgcmV0dXJuIDA7DQotDQotICAgIGZpbGVDb250ZW50cyA9
IChQU1RSKUdsb2JhbExvY2sobWVtT2JqKTsNCi0gICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMs
IGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxlbmd0aCgpKTsNCi0gICAgDQotICAgIEdsb2JhbFVu
bG9jayhtZW1PYmopOw0KLSAgICANCi0gICAgcmV0dXJuIG1lbU9iajsNCi19DQotDQogc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEp
DQogew0KICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUo
KSk7DQpAQCAtMjU4LDM2ICsyMzksNiBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJv
cENvbnRlbnQoDQogICAgIHJldHVybiBtZW1PYmo7DQogfQ0KIA0KLXN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbFVybEZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBDU3RyaW5nJiBjb250ZW50KQ0KLXsNCi0gICAgSFJFU1VMVCBociA9
IFNfT0s7DQotICAgIEhHTE9CQUwgbWVtT2JqID0gMDsNCi0gICAgU3RyaW5nIGZzUGF0aDsNCi0g
ICAgbWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwgc2l6ZW9mKEZJTEVHUk9VUERFU0NSSVBUT1Ip
KTsNCi0gICAgaWYgKCFtZW1PYmopDQotICAgICAgICByZXR1cm4gMDsNCi0NCi0gICAgRklMRUdS
T1VQREVTQ1JJUFRPUiogZmdkID0gKEZJTEVHUk9VUERFU0NSSVBUT1IqKUdsb2JhbExvY2sobWVt
T2JqKTsNCi0gICAgbWVtc2V0KGZnZCwgMCwgc2l6ZW9mKEZJTEVHUk9VUERFU0NSSVBUT1IpKTsN
Ci0gICAgZmdkLT5jSXRlbXMgPSAxOw0KLSAgICBmZ2QtPmZnZFswXS5kd0ZsYWdzID0gRkRfRklM
RVNJWkU7DQotICAgIGZnZC0+ZmdkWzBdLm5GaWxlU2l6ZUxvdyA9IGNvbnRlbnQubGVuZ3RoKCk7
DQotICAgIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRsZSwg
TCIuVVJMIiwgdHJ1ZSk7DQotDQotICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgew0KLSAg
ICAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7DQotICAgICAgICBHbG9iYWxGcmVlKG1lbU9iaik7
DQotICAgICAgICByZXR1cm4gMDsNCi0gICAgfQ0KLQ0KLSAgICBpbnQgbWF4U2l6ZSA9IG1pbihm
c1BhdGgubGVuZ3RoKCksIEFSUkFZU0laRShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsNCi0gICAg
Q29weU1lbW9yeShmZ2QtPmZnZFswXS5jRmlsZU5hbWUsIChMUENXU1RSKWZzUGF0aC5jaGFyYWN0
ZXJzKCksIG1heFNpemUgKiBzaXplb2YoVUNoYXIpKTsNCi0gICAgR2xvYmFsVW5sb2NrKG1lbU9i
aik7DQotICAgIA0KLSAgICByZXR1cm4gbWVtT2JqOw0KLX0NCi0NCi0NCiBzdGF0aWMgSEdMT0JB
TCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBDYWNoZWRJbWFnZSogaW1hZ2UpDQogew0KICAgICBBU1NFUlRfQVJH
KGltYWdlLCBpbWFnZSk7DQpAQCAtNzI1LDE2ICs2NzYsMzYgQEAgdm9pZCBDbGlwYm9hcmRXaW46
OndyaXRlVVJMKGNvbnN0IEtVUkwmIA0KICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsN
CiAgICAgQVNTRVJUKHVybC5jb250YWluc09ubHlBU0NJSSgpKTsgLy8gS1VSTDo6c3RyaW5nKCkg
aXMgVVJMIGVuY29kZWQuDQogDQorICAgIFN0cmluZyBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZy
b21VcmxPclRpdGxlKHVybCwgdGl0bGVTdHIsIEwiLlVSTCIsIHRydWUpOw0KICAgICBDU3RyaW5n
IGNvbnRlbnQgPSBtYWtlU3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIsIHVybCwg
IlxyXG4iKS5hc2NpaSgpOw0KIA0KLSAgICBIR0xPQkFMIHVybEZpbGVEZXNjcmlwdG9yID0gY3Jl
YXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0b3IodXJsLCB0aXRsZVN0ciwgY29udGVudCk7DQorICAg
IGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkNCisgICAgICAgIHJldHVybjsNCisNCisgICAgSEdM
T0JBTCB1cmxGaWxlRGVzY3JpcHRvciA9IEdsb2JhbEFsbG9jKEdQVFIsIHNpemVvZihGSUxFR1JP
VVBERVNDUklQVE9SKSk7DQogICAgIGlmICghdXJsRmlsZURlc2NyaXB0b3IpDQogICAgICAgICBy
ZXR1cm47DQotICAgIEhHTE9CQUwgdXJsRmlsZUNvbnRlbnQgPSBjcmVhdGVHbG9iYWxVUkxDb250
ZW50KGNvbnRlbnQpOw0KKw0KKyAgICBIR0xPQkFMIHVybEZpbGVDb250ZW50ID0gR2xvYmFsQWxs
b2MoR1BUUiwgY29udGVudC5sZW5ndGgoKSk7DQogICAgIGlmICghdXJsRmlsZUNvbnRlbnQpIHsN
CiAgICAgICAgIEdsb2JhbEZyZWUodXJsRmlsZURlc2NyaXB0b3IpOw0KICAgICAgICAgcmV0dXJu
Ow0KICAgICB9DQorDQorICAgIEZJTEVHUk9VUERFU0NSSVBUT1IqIGZnZCA9IHN0YXRpY19jYXN0
PEZJTEVHUk9VUERFU0NSSVBUT1IqPihHbG9iYWxMb2NrKHVybEZpbGVEZXNjcmlwdG9yKSk7DQor
ICAgIFplcm9NZW1vcnkoZmdkLCBzaXplb2YoRklMRUdST1VQREVTQ1JJUFRPUikpOw0KKyAgICBm
Z2QtPmNJdGVtcyA9IDE7DQorICAgIGZnZC0+ZmdkWzBdLmR3RmxhZ3MgPSBGRF9GSUxFU0laRTsN
CisgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5ndGgoKTsNCisNCisg
ICAgdW5zaWduZWQgbWF4U2l6ZSA9IG1pbihmc1BhdGgubGVuZ3RoKCksIEFSUkFZU0laRShmZ2Qt
PmZnZFswXS5jRmlsZU5hbWUpKTsNCisgICAgQ29weU1lbW9yeShmZ2QtPmZnZFswXS5jRmlsZU5h
bWUsIGZzUGF0aC5jaGFyYWN0ZXJzKCksIG1heFNpemUgKiBzaXplb2YoVUNoYXIpKTsNCisgICAg
R2xvYmFsVW5sb2NrKHVybEZpbGVEZXNjcmlwdG9yKTsNCisNCisgICAgY2hhciogZmlsZUNvbnRl
bnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQpKTsNCisg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxlbmd0
aCgpKTsNCisgICAgR2xvYmFsVW5sb2NrKHVybEZpbGVDb250ZW50KTsNCisNCiAgICAgd3JpdGVG
aWxlVG9EYXRhT2JqZWN0KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCB1cmxGaWxlRGVzY3Jp
cHRvciwgdXJsRmlsZUNvbnRlbnQsIDApOw0KIH0NCiANCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>