<?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>76647</bug_id>
          
          <creation_ts>2012-01-19 11:22:42 -0800</creation_ts>
          <short_desc>StringProtoFuncToUpperCase should call StringImpl::upper similar to StringProtoToLowerCase</short_desc>
          <delta_ts>2012-01-31 17:49:33 -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>JavaScriptCore</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>
          <dependson>77264</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>538840</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-01-19 11:22:42 -0800</bug_when>
    <thetext>StringProtoFuncToUpperCase has a local implementation similar to what exists in StringImpl::upper().  All of the work should be done in StringImpl, including optimizations for 8 bit strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538917</commentid>
    <comment_count>1</comment_count>
      <attachid>123170</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-01-19 12:21:55 -0800</bug_when>
    <thetext>Created attachment 123170
Patch

Neutral on sunspider and v8. Provides minor benefit to Dromaeo JavaScript tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539117</commentid>
    <comment_count>2</comment_count>
      <attachid>123170</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-19 15:57:34 -0800</bug_when>
    <thetext>Comment on attachment 123170
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544485</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-01-27 16:06:48 -0800</bug_when>
    <thetext>Committed r106167: &lt;http://trac.webkit.org/changeset/106167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544525</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-01-27 17:09:14 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/106170 due to a test failure in LayoutTests/fast/js/string-capitalization.html.

Need to resolve that issue and submit fixed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546559</commentid>
    <comment_count>5</comment_count>
      <attachid>124834</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-01-31 15:26:11 -0800</bug_when>
    <thetext>Created attachment 124834
Updated patch with fix for s-sharp

This patch is performance neutral on sunspider, v8 and kraken.  It speeds up the dromaeo-object-string toUpperCase subtest from 238runs/sec to 347runs/sec (46%).  Unfortunately, this provides little benefit to the dromaeo javascript overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546637</commentid>
    <comment_count>6</comment_count>
      <attachid>124834</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-31 16:47:33 -0800</bug_when>
    <thetext>Comment on attachment 124834
Updated patch with fix for s-sharp

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +2012-01-31  Michael Saboff  &lt;msaboff@apple.com&gt;
&gt; +
&gt; +2012-01-31  Michael Saboff  &lt;msaboff@apple.com&gt;

Double name here.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        (JSC::stringProtoFuncToLowerCase):

Since all you did was tweak whitespace in this function, I suggest removing this line.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1206
&gt; +    StringImpl* ourImpl = s.impl();

I would have called this sImpl for consistency with sSize above.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1208
&gt; +    if (ourImpl == upper.get())

The call to .get() here should not be needed.

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:366
&gt; +    const UChar* source16;

This source16 variable declared so long before it’s used is only necessary because we don’t want to call characters() in the fast 16-bit case. But I think one more check of is8Bit() is probably cheap enough so we can just call characters() and avoid it. Either way is probably OK.

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:388
&gt; +        // There are three special case characters.
&gt; +        //  1. sharp-S (0xdf) converts to &quot;SS&quot; (two characters)
&gt; +        //  2. micro (0xb5) converts to upper case micro (0x39c, a 16 bit character)
&gt; +        //  3. y umlaut (0xff) converts to upper case Y umlaut (0x178, a 16 bit character)

The code doesn’t assume that there are exactly three of these, so I don’t think we need to list them. The code simply assumes that there is exactly one character that converts to two, and that is U+00DF.

I think a better comment would focus on the fact that latinSmallLetterSharpS is the only character in the range U+0000-U+00FF that converts into more than one character, because that’s all the code assumes.

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:391
&gt; +            if (UNLIKELY(c == 0xdf))

Normally we would use a constant named latinSmallLetterSharpS in the header CharacterNames.h rather than coding 0xdf here in line.

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:395
&gt; +                // Have a character that is 16bit when converted to uppercase.

I think you could word this comment better. I would write this:

// Since this upper-cased character does not fit in an 8-bit string, we should convert to 16-bit.

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:412
&gt; +            if (UNLIKELY(c == 0xdf)) {

I’m not sure this UNLIKELY is all that helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546695</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-01-31 17:49:33 -0800</bug_when>
    <thetext>Committed r106417: &lt;http://trac.webkit.org/changeset/106417&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123170</attachid>
            <date>2012-01-19 12:21:55 -0800</date>
            <delta_ts>2012-01-31 15:26:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>76647.patch</filename>
            <type>text/plain</type>
            <size>5410</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1NDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTAxLTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlIHNob3VsZCBjYWxsIFN0cmluZ0ltcGw6OnVw
cGVyIHNpbWlsYXIgdG8gU3RyaW5nUHJvdG9Ub0xvd2VyQ2FzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIHN0cmluZ1Byb3RvRnVuY1RvVXBw
ZXJDYXNlIHRvIGNhbGwgU3RyaW5nSW1wbDo6dXBwZXIoKSBpcyBhIG1hbm9yIHNpbWlsYXIKKyAg
ICAgICAgdG8gc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoKS4gIEZpeGVkIFN0cmluZ0ltcGw6
OnVwcGVyKCkgdG8gaGFuZGxlIHRoZSB0d28KKyAgICAgICAgOCBiaXQgY2hhcmFjdGVycyB0aGF0
IHdoZW4gY29udmVydGVkIHRvIHVwcGVyIGNhc2UgYmVjb21lIDE2IGJpdCBjaGFyYWN0ZXJzLgor
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSk6IFJlbW92ZWQgZXh0cmEgdHJhaWxpbmcgd2hpdGVz
cGFjZS4KKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp1
cHBlcik6CisKIDIwMTItMDEtMTkgIEpvaSBTaWd1cmRzc29uICA8am9pQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBFbmFibGUgdXNlIG9mIHByZWNvbXBpbGVkIGhlYWRlcnMgaW4gQ2hyb21pdW0g
cG9ydCBvbiBXaW5kb3dzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMDU0MTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTk4LDcgKzExOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiAgICAgaWYgKCFzU2l6ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFs
KTsKIAotICAgIFN0cmluZ0ltcGwqIG91ckltcGwgPSBzLmltcGwoKTsgICAKKyAgICBTdHJpbmdJ
bXBsKiBvdXJJbXBsID0gcy5pbXBsKCk7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyID0g
b3VySW1wbC0+bG93ZXIoKTsKICAgICBpZiAob3VySW1wbCA9PSBsb3dlci5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKQEAgLTEyMTcsMzIgKzEyMTcsMTEgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICghc1NpemUp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7CiAKLSAgICBjb25zdCBVQ2hh
ciogc0RhdGEgPSBzLmNoYXJhY3RlcnMoKTsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihzU2l6
ZSk7Ci0KLSAgICBVQ2hhciBvcmVkID0gMDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNTaXpl
OyBpKyspIHsKLSAgICAgICAgVUNoYXIgYyA9IHNEYXRhW2ldOwotICAgICAgICBvcmVkIHw9IGM7
Ci0gICAgICAgIGJ1ZmZlcltpXSA9IHRvQVNDSUlVcHBlcihjKTsKLSAgICB9Ci0gICAgaWYgKCEo
b3JlZCAmIH4weDdmKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBVU3RyaW5nOjphZG9wdChidWZmZXIpKSk7Ci0KLSAgICBib29sIGVycm9yOwotICAgIGlu
dCBsZW5ndGggPSBVbmljb2RlOjp0b1VwcGVyKGJ1ZmZlci5kYXRhKCksIHNTaXplLCBzRGF0YSwg
c1NpemUsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGJ1ZmZlci5yZXNpemUo
bGVuZ3RoKTsKLSAgICAgICAgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgp
LCBsZW5ndGgsIHNEYXRhLCBzU2l6ZSwgJmVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKLSAgICB9Ci0gICAgaWYgKGxl
bmd0aCA9PSBzU2l6ZSkgewotICAgICAgICBpZiAobWVtY21wKGJ1ZmZlci5kYXRhKCksIHNEYXRh
LCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShzVmFsKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYnVmZmVyLnJlc2l6ZShsZW5n
dGgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6
YWRvcHQoYnVmZmVyKSkpOworICAgIFN0cmluZ0ltcGwqIG91ckltcGwgPSBzLmltcGwoKTsKKyAg
ICBSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIgPSBvdXJJbXBsLT51cHBlcigpOworICAgIGlmIChv
dXJJbXBsID09IHVwcGVyLmdldCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNW
YWwpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZyh1
cHBlci5yZWxlYXNlKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiAxMDU0
MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2Myw2ICszNjMsOCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OnVwcGVyCiAgICAgICAgIENSQVNIKCk7CiAgICAgaW50MzJfdCBsZW5ndGggPSBt
X2xlbmd0aDsKIAorICAgIGNvbnN0IFVDaGFyKiBzb3VyY2UxNjsKKwogICAgIGlmIChpczhCaXQo
KSkgewogICAgICAgICBMQ2hhciogZGF0YTg7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBu
ZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChtX2xlbmd0aCwgZGF0YTgpOwpAQCAtMzc4LDE5
ICszODAsMzAgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcgogICAg
ICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogCiAgICAgICAgIC8vIERvIGEgc2xv
d2VyIGltcGxlbWVudGF0aW9uIGZvciBjYXNlcyB0aGF0IGluY2x1ZGUgbm9uLUFTQ0lJIExhdGlu
LTEgY2hhcmFjdGVycy4KLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICBkYXRhOFtpXSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0
b1VwcGVyKG1fZGF0YThbaV0pKTsKKyAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgIFVDaGFyIHVwcGVyID0gVW5pY29kZTo6dG9VcHBlciht
X2RhdGE4W2ldKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh1cHBlciA+IDB4ZmYpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gSGF2ZSBhIGNoYXJhY3RlciB0aGF0IGlzIDE2Yml0IHdoZW4gY29u
dmVydGVkIHRvIHVwcGVyY2FzZS4KKyAgICAgICAgICAgICAgICBzb3VyY2UxNiA9IGNoYXJhY3Rl
cnMoKTsKKyAgICAgICAgICAgICAgICBnb3RvIHVwY29udmVydDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRhdGE4W2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+
KHVwcGVyKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsK
ICAgICB9CiAKKyAgICBzb3VyY2UxNiA9IG1fZGF0YTE2OworCit1cGNvbnZlcnQ6CiAgICAgVUNo
YXIqIGRhdGExNjsKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3SW1wbCA9IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQobV9sZW5ndGgsIGRhdGExNik7CiAgICAgCiAgICAgLy8gRG8gYSBmYXN0ZXIgbG9v
cCBmb3IgdGhlIGNhc2Ugd2hlcmUgYWxsIHRoZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KICAgICBV
Q2hhciBvcmVkID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIFVDaGFyIGMgPSBtX2RhdGExNltpXTsKKyAgICAgICAgVUNoYXIgYyA9IHNvdXJjZTE2
W2ldOwogICAgICAgICBvcmVkIHw9IGM7CiAgICAgICAgIGRhdGExNltpXSA9IHRvQVNDSUlVcHBl
cihjKTsKICAgICB9CkBAIC00MDAsMTEgKzQxMywxMSBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OnVwcGVyCiAgICAgLy8gRG8gYSBzbG93ZXIgaW1wbGVtZW50YXRpb24gZm9y
IGNhc2VzIHRoYXQgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVycy4KICAgICBib29sIGVycm9y
OwogICAgIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKG1fbGVuZ3RoLCBkYXRhMTYpOwot
ICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoZGF0YTE2LCBsZW5ndGgs
IG1fZGF0YTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKKyAgICBpbnQzMl90IHJlYWxMZW5ndGggPSBV
bmljb2RlOjp0b1VwcGVyKGRhdGExNiwgbGVuZ3RoLCBzb3VyY2UxNiwgbV9sZW5ndGgsICZlcnJv
cik7CiAgICAgaWYgKCFlcnJvciAmJiByZWFsTGVuZ3RoID09IGxlbmd0aCkKICAgICAgICAgcmV0
dXJuIG5ld0ltcGw7CiAgICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVhbExlbmd0
aCwgZGF0YTE2KTsKLSAgICBVbmljb2RlOjp0b1VwcGVyKGRhdGExNiwgcmVhbExlbmd0aCwgbV9k
YXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOworICAgIFVuaWNvZGU6OnRvVXBwZXIoZGF0YTE2LCBy
ZWFsTGVuZ3RoLCBzb3VyY2UxNiwgbV9sZW5ndGgsICZlcnJvcik7CiAgICAgaWYgKGVycm9yKQog
ICAgICAgICByZXR1cm4gdGhpczsKICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlKCk7Cg==
</data>
<flag name="review"
          id="124164"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124834</attachid>
            <date>2012-01-31 15:26:11 -0800</date>
            <delta_ts>2012-01-31 16:47:33 -0800</delta_ts>
            <desc>Updated patch with fix for s-sharp</desc>
            <filename>76647-3.patch</filename>
            <type>text/plain</type>
            <size>6636</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2Mzk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEyLTAxLTMxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisyMDEy
LTAxLTMxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFN0
cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlIHNob3VsZCBjYWxsIFN0cmluZ0ltcGw6OnVwcGVyIHNp
bWlsYXIgdG8gU3RyaW5nUHJvdG9Ub0xvd2VyQ2FzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNl
IHRvIGNhbGwgU3RyaW5nSW1wbDo6dXBwZXIoKSBpbiBhIG1hbm9yIHNpbWlsYXIKKyAgICAgICAg
dG8gc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoKS4gIEZpeGVkIFN0cmluZ0ltcGw6OnVwcGVy
KCkgdG8gaGFuZGxlIHRocmVlCisgICAgICAgIHNwZWNpYWwgY2FzZSA4LWJpdCBjaGFyYWN0ZXJz
LCBzLXNoYXJwICgweGRmKSwgbWljcm9uICgweGI1KSBhbmQgeSB1bWxhdXQgKDB4ZmYpLgorICAg
ICAgICBXZSBjb252ZXJ0IHMtc2hhcnAgdG8gIlNTIi4gIEZvciB0aGUgb3RoZXIgdHdvIGNoYXJh
Y3RlcnMsIHdoaWNoIGJlY29tZSAxNiBiaXQgCisgICAgICAgIHZhbHVlcyB3aGVuIGNvbnZlcnRl
ZCB0byB1cHBlciBjYXNlLCB3ZSB1cCBjb252ZXJ0IHRoZSB0aGUgc291cmNlIHN0cmluZyBhbmQg
dXNlCisgICAgICAgIHRoZSAxNiBiaXQgcGF0aC4KKworICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2Up
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6CisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVwcGVy
KToKKwogMjAxMi0wMS0zMSAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgcmVmZXJlbmNlcyB0byBneXAgY3lnd2luIGJ1aWxk
IHRhcmdldApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMDYzNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg0LDcg
KzExODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAg
aWYgKCFzU2l6ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKIAotICAg
IFN0cmluZ0ltcGwqIG91ckltcGwgPSBzLmltcGwoKTsgICAKKyAgICBTdHJpbmdJbXBsKiBvdXJJ
bXBsID0gcy5pbXBsKCk7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyID0gb3VySW1wbC0+
bG93ZXIoKTsKICAgICBpZiAob3VySW1wbCA9PSBsb3dlci5nZXQoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzVmFsKTsKQEAgLTEyMDMsMzIgKzEyMDMsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICghc1NpemUpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7CiAKLSAgICBjb25zdCBVQ2hhciogc0RhdGEg
PSBzLmNoYXJhY3RlcnMoKTsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihzU2l6ZSk7Ci0KLSAg
ICBVQ2hhciBvcmVkID0gMDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNTaXplOyBpKyspIHsK
LSAgICAgICAgVUNoYXIgYyA9IHNEYXRhW2ldOwotICAgICAgICBvcmVkIHw9IGM7Ci0gICAgICAg
IGJ1ZmZlcltpXSA9IHRvQVNDSUlVcHBlcihjKTsKLSAgICB9Ci0gICAgaWYgKCEob3JlZCAmIH4w
eDdmKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3Ry
aW5nOjphZG9wdChidWZmZXIpKSk7Ci0KLSAgICBib29sIGVycm9yOwotICAgIGludCBsZW5ndGgg
PSBVbmljb2RlOjp0b1VwcGVyKGJ1ZmZlci5kYXRhKCksIHNTaXplLCBzRGF0YSwgc1NpemUsICZl
cnJvcik7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGJ1ZmZlci5yZXNpemUobGVuZ3RoKTsK
LSAgICAgICAgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBsZW5ndGgs
IHNEYXRhLCBzU2l6ZSwgJmVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKLSAgICB9Ci0gICAgaWYgKGxlbmd0aCA9PSBz
U2l6ZSkgewotICAgICAgICBpZiAobWVtY21wKGJ1ZmZlci5kYXRhKCksIHNEYXRhLCBsZW5ndGgg
KiBzaXplb2YoVUNoYXIpKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShzVmFsKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYnVmZmVyLnJlc2l6ZShsZW5ndGgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6YWRvcHQoYnVm
ZmVyKSkpOworICAgIFN0cmluZ0ltcGwqIG91ckltcGwgPSBzLmltcGwoKTsKKyAgICBSZWZQdHI8
U3RyaW5nSW1wbD4gdXBwZXIgPSBvdXJJbXBsLT51cHBlcigpOworICAgIGlmIChvdXJJbXBsID09
IHVwcGVyLmdldCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNWYWwpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZyh1cHBlci5yZWxl
YXNlKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiAxMDYzNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2Myw2ICszNjMsOCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnVwcGVyCiAgICAgICAgIENSQVNIKCk7CiAgICAgaW50MzJfdCBsZW5ndGggPSBtX2xlbmd0aDsK
IAorICAgIGNvbnN0IFVDaGFyKiBzb3VyY2UxNjsKKwogICAgIGlmIChpczhCaXQoKSkgewogICAg
ICAgICBMQ2hhciogZGF0YTg7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0g
Y3JlYXRlVW5pbml0aWFsaXplZChtX2xlbmd0aCwgZGF0YTgpOwpAQCAtMzc4LDE5ICszODAsNTUg
QEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcgogICAgICAgICAgICAg
cmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogCiAgICAgICAgIC8vIERvIGEgc2xvd2VyIGltcGxl
bWVudGF0aW9uIGZvciBjYXNlcyB0aGF0IGluY2x1ZGUgbm9uLUFTQ0lJIExhdGluLTEgY2hhcmFj
dGVycy4KLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAg
ICAgICAgICBkYXRhOFtpXSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0b1VwcGVyKG1f
ZGF0YThbaV0pKTsKKyAgICAgICAgaW50IG51bWJlclNTQ2hhcmFjdGVycyA9IDA7CisKKyAgICAg
ICAgLy8gVGhlcmUgYXJlIHRocmVlIHNwZWNpYWwgY2FzZSBjaGFyYWN0ZXJzLgorICAgICAgICAv
LyAgMS4gc2hhcnAtUyAoMHhkZikgY29udmVydHMgdG8gIlNTIiAodHdvIGNoYXJhY3RlcnMpCisg
ICAgICAgIC8vICAyLiBtaWNybyAoMHhiNSkgY29udmVydHMgdG8gdXBwZXIgY2FzZSBtaWNybyAo
MHgzOWMsIGEgMTYgYml0IGNoYXJhY3RlcikKKyAgICAgICAgLy8gIDMuIHkgdW1sYXV0ICgweGZm
KSBjb252ZXJ0cyB0byB1cHBlciBjYXNlIFkgdW1sYXV0ICgweDE3OCwgYSAxNiBiaXQgY2hhcmFj
dGVyKQorICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgTENoYXIgYyA9IG1fZGF0YThbaV07CisgICAgICAgICAgICBpZiAoVU5MSUtFTFko
YyA9PSAweGRmKSkKKyAgICAgICAgICAgICAgICBudW1iZXJTU0NoYXJhY3RlcnMrKzsKKyAgICAg
ICAgICAgIFVDaGFyIHVwcGVyID0gVW5pY29kZTo6dG9VcHBlcihjKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWSh1cHBlciA+IDB4ZmYpKSB7CisgICAgICAgICAgICAgICAgLy8gSGF2ZSBhIGNo
YXJhY3RlciB0aGF0IGlzIDE2Yml0IHdoZW4gY29udmVydGVkIHRvIHVwcGVyY2FzZS4KKyAgICAg
ICAgICAgICAgICBzb3VyY2UxNiA9IGNoYXJhY3RlcnMoKTsKKyAgICAgICAgICAgICAgICBnb3Rv
IHVwY29udmVydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRhdGE4W2ldID0gc3RhdGlj
X2Nhc3Q8TENoYXI+KHVwcGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtYmVyU1ND
aGFyYWN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogCisgICAg
ICAgIC8vIFdlIGhhdmUgbnVtYmVyU1NDaGFyYWN0ZXJzIHNoYXJwLXMgY2hhcmFjdGVycywgYnV0
IG5laXRoZXIgb2YgdGhlIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycy4KKyAgICAgICAgbmV3SW1w
bCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9sZW5ndGggKyBudW1iZXJTU0NoYXJhY3RlcnMsIGRh
dGE4KTsKKworICAgICAgICBMQ2hhciogZGVzdCA9IGRhdGE4OworCisgICAgICAgIGZvciAoaW50
MzJfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBMQ2hhciBjID0gbV9k
YXRhOFtpXTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjID09IDB4ZGYpKSB7CisgICAgICAg
ICAgICAgICAgKmRlc3QrKyA9ICdTJzsKKyAgICAgICAgICAgICAgICAqZGVzdCsrID0gJ1MnOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgKmRlc3QrKyA9IHN0YXRpY19jYXN0
PExDaGFyPihVbmljb2RlOjp0b1VwcGVyKGMpKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogICAgIH0KIAorICAgIHNvdXJjZTE2ID0gbV9k
YXRhMTY7CisKK3VwY29udmVydDoKICAgICBVQ2hhciogZGF0YTE2OwogICAgIFJlZlB0cjxTdHJp
bmdJbXBsPiBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChtX2xlbmd0aCwgZGF0YTE2KTsK
ICAgICAKICAgICAvLyBEbyBhIGZhc3RlciBsb29wIGZvciB0aGUgY2FzZSB3aGVyZSBhbGwgdGhl
IGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgogICAgIFVDaGFyIG9yZWQgPSAwOwogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgVUNoYXIgYyA9IG1fZGF0YTE2W2ld
OworICAgICAgICBVQ2hhciBjID0gc291cmNlMTZbaV07CiAgICAgICAgIG9yZWQgfD0gYzsKICAg
ICAgICAgZGF0YTE2W2ldID0gdG9BU0NJSVVwcGVyKGMpOwogICAgIH0KQEAgLTQwMCwxMSArNDM4
LDExIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIKICAgICAvLyBE
byBhIHNsb3dlciBpbXBsZW1lbnRhdGlvbiBmb3IgY2FzZXMgdGhhdCBpbmNsdWRlIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzLgogICAgIGJvb2wgZXJyb3I7CiAgICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQobV9sZW5ndGgsIGRhdGExNik7Ci0gICAgaW50MzJfdCByZWFsTGVuZ3RoID0gVW5p
Y29kZTo6dG9VcHBlcihkYXRhMTYsIGxlbmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3Ip
OworICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoZGF0YTE2LCBsZW5n
dGgsIHNvdXJjZTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKICAgICBpZiAoIWVycm9yICYmIHJlYWxM
ZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gbmV3SW1wbDsKICAgICBuZXdJbXBsID0g
Y3JlYXRlVW5pbml0aWFsaXplZChyZWFsTGVuZ3RoLCBkYXRhMTYpOwotICAgIFVuaWNvZGU6OnRv
VXBwZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBtX2RhdGExNiwgbV9sZW5ndGgsICZlcnJvcik7Cisg
ICAgVW5pY29kZTo6dG9VcHBlcihkYXRhMTYsIHJlYWxMZW5ndGgsIHNvdXJjZTE2LCBtX2xlbmd0
aCwgJmVycm9yKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIHJl
dHVybiBuZXdJbXBsLnJlbGVhc2UoKTsK
</data>
<flag name="review"
          id="126201"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>