<?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>96130</bug_id>
          
          <creation_ts>2012-09-07 10:22:40 -0700</creation_ts>
          <short_desc>Replace WTF::numberToString() with String::numberToStringECMAScript()</short_desc>
          <delta_ts>2012-09-09 17:45:39 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96132</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>714680</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-07 10:22:40 -0700</bug_when>
    <thetext>Replace WTF::numberTo*String() with String::number[ToStringECMAScript]()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714685</commentid>
    <comment_count>1</comment_count>
      <attachid>162805</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-07 10:26:51 -0700</bug_when>
    <thetext>Created attachment 162805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715223</commentid>
    <comment_count>2</comment_count>
      <attachid>162805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-07 19:11:02 -0700</bug_when>
    <thetext>Comment on attachment 162805
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Replace WTF::numberTo*String() with String::number[ToStringECMAScript]()

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715252</commentid>
    <comment_count>3</comment_count>
      <attachid>162805</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 21:18:22 -0700</bug_when>
    <thetext>Comment on attachment 162805
Patch

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

On NumberPrototype and V8DependentRetained, I don&apos;t think we can afford one extra function call + the extra branch in String::number().

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1028
&gt; -                NumberToStringBuffer buffer;
&gt; -                const char* alphaString = numberToFixedPrecisionString(color.alpha() / 255.0f, 6, buffer, true);
&gt; -                result.append(alphaString, strlen(alphaString));
&gt; +                String alphaString = String::number(color.alpha() / 255.0f);
&gt; +                result.append(alphaString.characters8(), alphaString.length());

This is also a regression.
Previously, we would only allocate NumberToStringBuffer on the stack. With this change, we will allocate a new StringImpl, then copy the content of the buffer to it.

I am also not a fan of relying on the implementation generating a 8bits buffer. It is the case today but that could change in the future.

Given that someone took the time to write the original code is such a contrived way, I assume the performance is important here.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:90
&gt; -    NumberToStringBuffer buffer;
&gt; -    return String(numberToString(number, buffer));
&gt; +    return String::numberToStringECMAScript(number);

This looks like a good idea. It makes the code simpler and will enjoy https://bugs.webkit.org/show_bug.cgi?id=96132 for free.

&gt; Source/WebCore/platform/Decimal.cpp:685
&gt; -    if (isfinite(doubleValue)) {
&gt; -        NumberToStringBuffer buffer;
&gt; -        return fromString(numberToString(doubleValue, buffer));
&gt; -    }
&gt; +    if (isfinite(doubleValue))
&gt; +        return fromString(String::numberToStringECMAScript(doubleValue));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715601</commentid>
    <comment_count>4</comment_count>
      <attachid>163014</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-09 14:20:58 -0700</bug_when>
    <thetext>Created attachment 163014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715643</commentid>
    <comment_count>5</comment_count>
      <attachid>163014</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 17:45:35 -0700</bug_when>
    <thetext>Comment on attachment 163014
Patch

Clearing flags on attachment: 163014

Committed r128008: &lt;http://trac.webkit.org/changeset/128008&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715644</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 17:45:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162805</attachid>
            <date>2012-09-07 10:26:51 -0700</date>
            <delta_ts>2012-09-09 14:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96130.patch</filename>
            <type>text/plain</type>
            <size>7369</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMDhhNzMuLjVmNWEwNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA3ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgV1RGOjpudW1iZXJU
bypTdHJpbmcoKSB3aXRoIFN0cmluZzo6bnVtYmVyW1RvU3RyaW5nRUNNQVNjcmlwdF0oKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhlZCk6
CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKwogMjAxMi0wOS0w
NiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
U3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKCkgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggNGExMGVmZC4u
OGNiNzZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCkBAIC00MjEsOCArNDIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBoYW5k
bGVkIGJ5IG51bWJlclRvU3RyaW5nLgogICAgIEFTU0VSVChpc2Zpbml0ZSh4KSk7CiAKLSAgICBO
dW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyhleGVjLCBTdHJpbmcobnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKHgsIGRlY2ltYWxQ
bGFjZXMsIGJ1ZmZlcikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBTdHJpbmc6Om51bWJlcih4LCBTaG91bGRSb3VuZERlY2ltYWxQbGFjZXMsIGRlY2ltYWxQ
bGFjZXMpKSk7CiB9CiAKIC8vIHRvUHJlY2lzaW9uIGNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3Ry
aW5nLCB0YWtlaW5nIGFuIGFyZ3VtZW50IHNwZWNpZnlpbmcgYQpAQCAtNDUyLDggKzQ1MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24o
RXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghaXNmaW5pdGUoeCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFT
Y3JpcHQoeCkpKTsKIAotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZyhudW1iZXJUb0ZpeGVkUHJl
Y2lzaW9uU3RyaW5nKHgsIHNpZ25pZmljYW50RmlndXJlcywgYnVmZmVyKSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyKHgsIFNob3Vs
ZFJvdW5kU2lnbmlmaWNhbnRGaWd1cmVzLCBzaWduaWZpY2FudEZpZ3VyZXMpKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgaW50MzJfdCBleHRyYWN0UmFkaXhGcm9tQXJncyhFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IDgzOTJkMmUuLjdlNzQyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMDcg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFj
ZSBXVEY6Om51bWJlclRvKlN0cmluZygpIHdpdGggU3RyaW5nOjpudW1iZXJbVG9TdHJpbmdFQ01B
U2NyaXB0XSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NjEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6IEFkZGVkIHVzaW5nIFdURjo6U2hvdWxkUm91bmRTaWdu
aWZpY2FudEZpZ3VyZXMuCisKIDIwMTItMDktMDYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcigp
IGFuZCB1c2UgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDYzNmRiOWMuLmI2NTU0Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNjgxLDYgKzY4MSw3IEBAIHVzaW5nIFdURjo6
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsKIHVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVz
aW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiB1c2luZyBXVEY6OlNob3VsZFJvdW5kRGVjaW1hbFBsYWNl
czsKK3VzaW5nIFdURjo6U2hvdWxkUm91bmRTaWduaWZpY2FudEZpZ3VyZXM7CiB1c2luZyBXVEY6
OkFTQ0lJTGl0ZXJhbDsKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDNkNjVlNWUuLjAwMzhmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMi0wOS0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXBsYWNlIFdURjo6bnVtYmVyVG8qU3RyaW5nKCkgd2l0aCBTdHJpbmc6Om51bWJlcltU
b1N0cmluZ0VDTUFTY3JpcHRdKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk2MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFpbmVkLmg6CisgICAgICAg
IChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpjcmVhdGVQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmZyb21Eb3VibGUpOgorCiAyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRO
dW1iZXIoKSBhbmQgdXNlIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERlcGVuZGVudFJldGFpbmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERl
cGVuZGVudFJldGFpbmVkLmgKaW5kZXggMTUyMmVhNS4uNjdlNmRkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhEZXBlbmRlbnRSZXRhaW5lZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaApAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVW51c2VkUGFyYW0uaD4KLSNpbmNsdWRlIDx3dGYvZHRvYS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Nywx
MyArNzcsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiBjcmVhdGVQcm9wZXJ0eU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHByZWZpeCA9ICJWOERlcGVuZGVudFJldGFpbmVkIjsKLSAgICAgICAgTnVtYmVyVG9T
dHJpbmdCdWZmZXIgYnVmZmVyOwotICAgICAgICBWZWN0b3I8Y2hhciwgNjQ+IG5hbWU7Ci0gICAg
ICAgIGNvbnN0IGNoYXIqIGlkID0gbnVtYmVyVG9TdHJpbmcoVjhQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT5uZXh0RGVwZW5kZW50UmV0YWluZWRJZCgpLCBidWZmZXIpOwotICAgICAgICBuYW1l
LmFwcGVuZChwcmVmaXgsIHNpemVvZihwcmVmaXgpIC0gMSk7Ci0gICAgICAgIG5hbWUuYXBwZW5k
KGlkLCBzdHJsZW4oaWQpICsgMSk7Ci0gICAgICAgIHJldHVybiBWOEhpZGRlblByb3BlcnR5TmFt
ZTo6aGlkZGVuUmVmZXJlbmNlTmFtZShuYW1lLmRhdGEoKSwgTmV3U3RyaW5nKTsKKyAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlY4
RGVwZW5kZW50UmV0YWluZWQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1i
ZXJUb1N0cmluZ0VDTUFTY3JpcHQoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5uZXh0RGVw
ZW5kZW50UmV0YWluZWRJZCgpKSk7CisgICAgICAgIHJldHVybiBWOEhpZGRlblByb3BlcnR5TmFt
ZTo6aGlkZGVuUmVmZXJlbmNlTmFtZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYW1l
LnRvU3RyaW5nKCkuY2hhcmFjdGVyczgoKSksIE5ld1N0cmluZyk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgb3duZXJXZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmpl
Y3QsIHZvaWQqIHBhcmFtZXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IDU2OWQ0ZGMuLjdiNzViMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcApAQCAtMTAyNCw5ICsxMDI0LDggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIGlmIChjb2xvckhhc0FscGhh
KSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiLCAyKTsKIAotICAgICAgICAg
ICAgICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBhbHBoYVN0cmluZyA9IG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcoY29sb3Iu
YWxwaGEoKSAvIDI1NS4wZiwgNiwgYnVmZmVyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGFscGhhU3RyaW5nLCBzdHJsZW4oYWxwaGFTdHJpbmcpKTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgYWxwaGFTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihjb2xvci5hbHBoYSgpIC8g
MjU1LjBmKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGFscGhhU3RyaW5nLmNoYXJh
Y3RlcnM4KCksIGFscGhhU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBmMGViMGViLi5lNTI4MDQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtODcsOCAr
ODcsNyBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogewog
ICAgIC8vIEFjY29yZGluZyB0byBIVE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBudW1iZXIgbiBhcyBhIGZsb2F0aW5nCiAgICAgLy8gcG9pbnQgbnVtYmVyIiBpcyBhIHN0cmlu
ZyBwcm9kdWNlZCBieSBhcHBseWluZyBUb1N0cmluZygpIHRvIG4uCi0gICAgTnVtYmVyVG9TdHJp
bmdCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBTdHJpbmcobnVtYmVyVG9TdHJpbmcobnVtYmVy
LCBidWZmZXIpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
bnVtYmVyKTsKIH0KIAogRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4IDlkMDJmOTEuLmJlMzdlYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlY2ltYWwuY3BwCkBAIC02ODEsMTAgKzY4MSw4IEBAIERlY2ltYWwgRGVjaW1hbDo6
Zmxvb3IoKSBjb25zdAogCiBEZWNpbWFsIERlY2ltYWw6OmZyb21Eb3VibGUoZG91YmxlIGRvdWJs
ZVZhbHVlKQogewotICAgIGlmIChpc2Zpbml0ZShkb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgTnVt
YmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgICAgICByZXR1cm4gZnJvbVN0cmluZyhudW1i
ZXJUb1N0cmluZyhkb3VibGVWYWx1ZSwgYnVmZmVyKSk7Ci0gICAgfQorICAgIGlmIChpc2Zpbml0
ZShkb3VibGVWYWx1ZSkpCisgICAgICAgIHJldHVybiBmcm9tU3RyaW5nKFN0cmluZzo6bnVtYmVy
VG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVlKSk7CiAKICAgICBpZiAoaXNpbmYoZG91Ymxl
VmFsdWUpKQogICAgICAgICByZXR1cm4gaW5maW5pdHkoZG91YmxlVmFsdWUgPCAwID8gTmVnYXRp
dmUgOiBQb3NpdGl2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163014</attachid>
            <date>2012-09-09 14:20:58 -0700</date>
            <delta_ts>2012-09-09 17:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96130-20120909232034.patch</filename>
            <type>text/plain</type>
            <size>2782</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNzdkODNkMzdjZDNm
ZmM1MjI1MjY3MmZlZjg2ZTNlZjYzOTZhYi4uMjJkNjAzMzg3NGJlZmM3ZDliZDFiZWE3OTMxZTJi
ZmE3NzNjNjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTA5ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgV1RG
OjpudW1iZXJUb1N0cmluZygpIHdpdGggU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU3Ry
aW5nIGNsYXNzIHByb3ZpZGVzIGEgbmljZSB3cmFwcGVyIGZvciB0aGlzIGZ1bmN0aW9uCisgICAg
ICAgIGluIHRoZSBtZWFudGltZSwgc28ganVzdCB1c2UgaXQgdG8gYXZvaWQgY29kZSBkdXBsaWNh
dGlvbi4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tRG91YmxlKToK
KwogMjAxMi0wOS0wOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIEZpeCBidWlsZCBicmVhayB3aGVuIE1FRElBX1NUUkVBTSBpcyBlbmFi
bGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cAppbmRleCBmMGViMGViYjdlYWVmYTBkYzhhNjI3OWE5NzBmN2FlN2ZkYzQ2ODcwLi45NzU2NTcy
NGExYTdkZWFlMGFlOGViNDkzZTU5ZjZlYWY4MzYxNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lu
Y2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtODcs
OCArODYsNyBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQog
ewogICAgIC8vIEFjY29yZGluZyB0byBIVE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9m
IHRoZSBudW1iZXIgbiBhcyBhIGZsb2F0aW5nCiAgICAgLy8gcG9pbnQgbnVtYmVyIiBpcyBhIHN0
cmluZyBwcm9kdWNlZCBieSBhcHBseWluZyBUb1N0cmluZygpIHRvIG4uCi0gICAgTnVtYmVyVG9T
dHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBTdHJpbmcobnVtYmVyVG9TdHJpbmcobnVt
YmVyLCBidWZmZXIpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3Jp
cHQobnVtYmVyKTsKIH0KIAogRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4IDhhNWUyNzViZTk3NGMzYTk0Yzc0ZTJhOTBkNGNk
ODhhYTFjNzNlZDEuLjQ4NGJiZDQ3YTBmZGQ1NWRhNGExYmYzNGNkZjEyMjJhODUxZjcwOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02ODEs
MTAgKzY4MCw4IEBAIERlY2ltYWwgRGVjaW1hbDo6Zmxvb3IoKSBjb25zdAogCiBEZWNpbWFsIERl
Y2ltYWw6OmZyb21Eb3VibGUoZG91YmxlIGRvdWJsZVZhbHVlKQogewotICAgIGlmIChpc2Zpbml0
ZShkb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwot
ICAgICAgICByZXR1cm4gZnJvbVN0cmluZyhudW1iZXJUb1N0cmluZyhkb3VibGVWYWx1ZSwgYnVm
ZmVyKSk7Ci0gICAgfQorICAgIGlmIChpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCisgICAgICAgIHJl
dHVybiBmcm9tU3RyaW5nKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZVZh
bHVlKSk7CiAKICAgICBpZiAoaXNpbmYoZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4gaW5m
aW5pdHkoZG91YmxlVmFsdWUgPCAwID8gTmVnYXRpdmUgOiBQb3NpdGl2ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>