<?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>23409</bug_id>
          
          <creation_ts>2009-01-17 17:28:19 -0800</creation_ts>
          <short_desc>REGRESSION: RegExp &apos;replace()&apos; function improperly processes &apos;$$&apos;</short_desc>
          <delta_ts>2009-01-23 13:53:40 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix, HasReduction, InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="William J. Edney">bedney</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106200</commentid>
    <comment_count>0</comment_count>
    <who name="William J. Edney">bedney</who>
    <bug_when>2009-01-17 17:28:19 -0800</bug_when>
    <thetext>All -

I&apos;ve attached a testcase that shows that Webkit&apos;s JS engine is no longer properly processing &apos;$$&apos; when present in a replace() using a RegExp, where the replacement is a String (in Safari 3.2.X, this is working fine).

Within the replacement String, &apos;$&apos; is used as a metacharacter along with a number or other special character to reference part of a match. Therefore, to output a &apos;$&apos;, you need to use &apos;$$&apos;. This should output a single &apos;$&apos;.

But in the latest Webkit builds (I&apos;m using r40000), a &apos;$$&apos; is output when this syntax is used. All other browsers, FF 3.0.X, IE7+, Chrome properly process this (as does Safari as mentioned above).

I&apos;ve attached a small testcase.

Cheers,

- Bill</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106201</commentid>
    <comment_count>1</comment_count>
      <attachid>26830</attachid>
    <who name="William J. Edney">bedney</who>
    <bug_when>2009-01-17 17:29:33 -0800</bug_when>
    <thetext>Created attachment 26830
A testcase demonstrating how &apos;$$&apos; is broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106223</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-18 15:46:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/6505723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106276</commentid>
    <comment_count>3</comment_count>
      <attachid>26849</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-19 12:54:58 -0800</bug_when>
    <thetext>Created attachment 26849
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106289</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-19 15:35:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/40042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106794</commentid>
    <comment_count>5</comment_count>
    <who name="William J. Edney">bedney</who>
    <bug_when>2009-01-23 13:53:40 -0800</bug_when>
    <thetext>Verified fixed in build 40102.

Thanks guys!

Cheers,

- Bill</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26830</attachid>
            <date>2009-01-17 17:29:33 -0800</date>
            <delta_ts>2009-01-17 17:29:33 -0800</delta_ts>
            <desc>A testcase demonstrating how &apos;$$&apos; is broken.</desc>
            <filename>regexpreplacetest.html</filename>
            <type>text/html</type>
            <size>546</size>
            <attacher name="William J. Edney">bedney</attacher>
            
              <data encoding="base64">PGh0bWw+Cgk8aGVhZD4KCQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJZnVuY3Rp
b24gZG9JdCgpCgl7CgkJdmFyCQlteVJlZ0V4cDsKCQl2YXIJCW9yaWdTdHJpbmc7CgoJCW15UmVn
RXhwID0gL3NhbGFyeTogKFxkKykvOwoJCW9yaWdTdHJpbmcgPSAnc2FsYXJ5OiAyMDAwMCc7CgoJ
CWFsZXJ0KG9yaWdTdHJpbmcucmVwbGFjZShteVJlZ0V4cCwgJ015IHNhbGFyeSBpczogJCQkMScp
KTsKCX07Cgk8L3NjcmlwdD4KCgk8L2hlYWQ+CgkKCTxib2R5PgoJCVRoaXMgdGVzdCBzaG91bGQg
YWxlcnQoKSB0aGUgZm9sbG93aW5nIHRleHQ6PGJyLz4KCQlNeSBzYWxhcnkgaXM6ICQyMDAwMC48
YnIvPjxici8+CgkJQnV0IG9uIFdlYmtpdCBidWlsZHMgKGF0IGxlYXN0IHVwIHRvIDQwMDAwKSwg
aXQgb3V0cHV0czo8YnIvPgoJCU15IHNhbGFyeSBpczogJCQyMDAwMC48YnIvPjxici8+CgkJPGJ1
dHRvbiBvbmNsaWNrPSJkb0l0KCkiPkNsaWNrIGhlcmUgdG8gc2VlIHRoZSBvdXRwdXQgb2YgdGhl
IHRlc3Q8L2J1dHRvbj4KCTwvYm9keT4KCjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26849</attachid>
            <date>2009-01-19 12:54:58 -0800</date>
            <delta_ts>2009-01-19 15:31:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>StringReplacePatch.txt</filename>
            <type>text/plain</type>
            <size>5464</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQwMDM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDEtMTkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJ1ZyAyMzQwOTogUkVHUkVTU0lPTjogUmVnRXhwICdyZXBsYWNlKCkn
IGZ1bmN0aW9uIGltcHJvcGVybHkgcHJvY2Vzc2VzICckJCcKKyAgICAgICAgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQwOT4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzY1MDU3MjM+CisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9zdHJpbmctcmVwbGFjZS0zLmh0
bWwKKworICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6c3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKTogUmVtb3ZlIGNvZGUgdGhhdCBhZGRzIGFuIGV4
dHJhICQgLS0gbm90IHN1cmUKKyAgICAgICAgaG93IHRoaXMgZXZlciB3b3JrZWQuCisKIDIwMDkt
MDEtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNDAwMzMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsx
NDYsNiBAQCBzdGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlCiAgICAgICAg
ICAgICArK2k7CiAgICAgICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVuZChyZXBs
YWNlbWVudC5kYXRhKCkgKyBvZmZzZXQsIGkgLSBvZmZzZXQpOwogICAgICAgICAgICAgb2Zmc2V0
ID0gaSArIDE7Ci0gICAgICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVuZCgnJCcp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NDAwMzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAwOS0wMS0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIzNDA5OiBS
RUdSRVNTSU9OOiBSZWdFeHAgJ3JlcGxhY2UoKScgZnVuY3Rpb24gaW1wcm9wZXJseSBwcm9jZXNz
ZXMgJyQkJworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDA5PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjUwNTcyMz4KKworICAgICAgICAqIGZh
c3QvanMvcmVzb3VyY2VzL3N0cmluZy1yZXBsYWNlLTMuanM6CisgICAgICAgICogZmFzdC9qcy9z
dHJpbmctcmVwbGFjZS0zLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wMS0xOSAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIHRlc3QgcmVzdWx0cyBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDE3LgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcmVwbGFjZS0zLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1yZXBsYWNlLTMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA0MDAzNCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXJlcGxhY2Ut
My1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAgUEFTUyB0ZXN0
U3RyaW5nLnJlcGxhY2UoLyh0KShoKShlIGUpKG4pKAogUEFTUyB0ZXN0U3RyaW5nLnJlcGxhY2Uo
J0kgZmVlbCcsICd5ZXQgJCYganVzdCcpIGlzICJJdCdzIHRoZSBlbmQgb2YgdGhlIHdvcmxkIGFz
IHdlIGtub3cgaXQsIGFuZCB5ZXQgSSBmZWVsIGp1c3QgZmluZS4iCiBQQVNTIHRlc3RTdHJpbmcu
cmVwbGFjZSgndGhlIGVuZCcsICduaWNlLiAkYGEgcGljdHVyZScpIGlzICJJdCdzIG5pY2UuIEl0
J3MgYSBwaWN0dXJlIG9mIHRoZSB3b3JsZCBhcyB3ZSBrbm93IGl0LCBhbmQgSSBmZWVsIGZpbmUu
IgogUEFTUyB0ZXN0U3RyaW5nLnJlcGxhY2UoImZlZWwgZmluIiwgImFtIGdvbiQnIEJ5IikgaXMg
Ikl0J3MgdGhlIGVuZCBvZiB0aGUgd29ybGQgYXMgd2Uga25vdyBpdCwgYW5kIEkgYW0gZ29uZS4g
QnllLiIKLVBBU1MgdGVzdFN0cmluZy5yZXBsYWNlKC9lbmQvLCAnJDAgJDAwICQxICQwMSAkMiAk
MTIgJDkgJDk5ICQxYSAkMTFhJykgaXMgIkl0J3MgdGhlICQwICQwMCAkMSAkMDEgJDIgJDEyICQ5
ICQ5OSAkMWEgJDExYSBvZiB0aGUgd29ybGQgYXMgd2Uga25vdyBpdCwgYW5kIEkgZmVlbCBmaW5l
LiIKLVBBU1MgdGVzdFN0cmluZy5yZXBsYWNlKCdlbmQnLCAnJDAgJDAwICQxICQwMSAkMiAkMTIg
JDkgJDk5ICQxYSAkMTFhJykgaXMgIkl0J3MgdGhlICQwICQwMCAkMSAkMDEgJDIgJDEyICQ5ICQ5
OSAkMWEgJDExYSBvZiB0aGUgd29ybGQgYXMgd2Uga25vdyBpdCwgYW5kIEkgZmVlbCBmaW5lLiIK
LVBBU1MgdGVzdFN0cmluZy5yZXBsYWNlKC8oZSkobikoZCkgKG8pKGYpICh0KShoKShlKSAodyko
bykocikobCkoZCkvLCAnJDAgJDAwICQxICQwMSAkMiAkMTIgJDkgJDk5ICQxYSAkMTFhJykgaXMg
Ikl0J3MgdGhlICQwICQwMCBlIGUgbiBsIHcgdzkgZWEgcmEgYXMgd2Uga25vdyBpdCwgYW5kIEkg
ZmVlbCBmaW5lLiIKK1BBU1MgdGVzdFN0cmluZy5yZXBsYWNlKC9lbmQvLCAnJCQgJDAgJDAwICQx
ICQwMSAkMiAkMTIgJDkgJDk5ICQxYSAkMTFhJykgaXMgIkl0J3MgdGhlICQgJDAgJDAwICQxICQw
MSAkMiAkMTIgJDkgJDk5ICQxYSAkMTFhIG9mIHRoZSB3b3JsZCBhcyB3ZSBrbm93IGl0LCBhbmQg
SSBmZWVsIGZpbmUuIgorUEFTUyB0ZXN0U3RyaW5nLnJlcGxhY2UoJ2VuZCcsICckJCAkMCAkMDAg
JDEgJDAxICQyICQxMiAkOSAkOTkgJDFhICQxMWEnKSBpcyAiSXQncyB0aGUgJCAkMCAkMDAgJDEg
JDAxICQyICQxMiAkOSAkOTkgJDFhICQxMWEgb2YgdGhlIHdvcmxkIGFzIHdlIGtub3cgaXQsIGFu
ZCBJIGZlZWwgZmluZS4iCitQQVNTIHRlc3RTdHJpbmcucmVwbGFjZSgvKGUpKG4pKGQpIChvKShm
KSAodCkoaCkoZSkgKHcpKG8pKHIpKGwpKGQpLywgJyQkICQwICQwMCAkMSAkMDEgJDIgJDEyICQ5
ICQ5OSAkMWEgJDExYScpIGlzICJJdCdzIHRoZSAkICQwICQwMCBlIGUgbiBsIHcgdzkgZWEgcmEg
YXMgd2Uga25vdyBpdCwgYW5kIEkgZmVlbCBmaW5lLiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvc3RyaW5nLXJlcGxhY2UtMy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9zdHJpbmctcmVwbGFjZS0zLmpzCShyZXZpc2lvbiA0MDAzNCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3N0cmluZy1yZXBsYWNlLTMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDEyICsyMSwxMiBAQCBzaG91bGRCZSgidGVzdFN0cmluZy5yZXBsYWNlKCd0
aGUgZW5kJywgCiBzaG91bGRCZSgndGVzdFN0cmluZy5yZXBsYWNlKCJmZWVsIGZpbiIsICJhbSBn
b24kXCcgQnkiKScsCiAgICAgICAgICAiXCJJdCdzIHRoZSBlbmQgb2YgdGhlIHdvcmxkIGFzIHdl
IGtub3cgaXQsIGFuZCBJIGFtIGdvbmUuIEJ5ZS5cIiIpOwogCi1zaG91bGRCZSgidGVzdFN0cmlu
Zy5yZXBsYWNlKC9lbmQvLCAnJDAgJDAwICQxICQwMSAkMiAkMTIgJDkgJDk5ICQxYSAkMTFhJyki
LAotICAgICAgICAgIlwiSXQncyB0aGUgJDAgJDAwICQxICQwMSAkMiAkMTIgJDkgJDk5ICQxYSAk
MTFhIG9mIHRoZSB3b3JsZCBhcyB3ZSBrbm93IGl0LCBhbmQgSSBmZWVsIGZpbmUuXCIiKTsKLXNo
b3VsZEJlKCJ0ZXN0U3RyaW5nLnJlcGxhY2UoJ2VuZCcsICckMCAkMDAgJDEgJDAxICQyICQxMiAk
OSAkOTkgJDFhICQxMWEnKSIsCi0gICAgICAgICAiXCJJdCdzIHRoZSAkMCAkMDAgJDEgJDAxICQy
ICQxMiAkOSAkOTkgJDFhICQxMWEgb2YgdGhlIHdvcmxkIGFzIHdlIGtub3cgaXQsIGFuZCBJIGZl
ZWwgZmluZS5cIiIpOworc2hvdWxkQmUoInRlc3RTdHJpbmcucmVwbGFjZSgvZW5kLywgJyQkICQw
ICQwMCAkMSAkMDEgJDIgJDEyICQ5ICQ5OSAkMWEgJDExYScpIiwKKyAgICAgICAgICJcIkl0J3Mg
dGhlICQgJDAgJDAwICQxICQwMSAkMiAkMTIgJDkgJDk5ICQxYSAkMTFhIG9mIHRoZSB3b3JsZCBh
cyB3ZSBrbm93IGl0LCBhbmQgSSBmZWVsIGZpbmUuXCIiKTsKK3Nob3VsZEJlKCJ0ZXN0U3RyaW5n
LnJlcGxhY2UoJ2VuZCcsICckJCAkMCAkMDAgJDEgJDAxICQyICQxMiAkOSAkOTkgJDFhICQxMWEn
KSIsCisgICAgICAgICAiXCJJdCdzIHRoZSAkICQwICQwMCAkMSAkMDEgJDIgJDEyICQ5ICQ5OSAk
MWEgJDExYSBvZiB0aGUgd29ybGQgYXMgd2Uga25vdyBpdCwgYW5kIEkgZmVlbCBmaW5lLlwiIik7
CiAKLXNob3VsZEJlKCJ0ZXN0U3RyaW5nLnJlcGxhY2UoLyhlKShuKShkKSAobykoZikgKHQpKGgp
KGUpICh3KShvKShyKShsKShkKS8sICckMCAkMDAgJDEgJDAxICQyICQxMiAkOSAkOTkgJDFhICQx
MWEnKSIsCi0gICAgICAgICAiXCJJdCdzIHRoZSAkMCAkMDAgZSBlIG4gbCB3IHc5IGVhIHJhIGFz
IHdlIGtub3cgaXQsIGFuZCBJIGZlZWwgZmluZS5cIiIpOworc2hvdWxkQmUoInRlc3RTdHJpbmcu
cmVwbGFjZSgvKGUpKG4pKGQpIChvKShmKSAodCkoaCkoZSkgKHcpKG8pKHIpKGwpKGQpLywgJyQk
ICQwICQwMCAkMSAkMDEgJDIgJDEyICQ5ICQ5OSAkMWEgJDExYScpIiwKKyAgICAgICAgICJcIkl0
J3MgdGhlICQgJDAgJDAwIGUgZSBuIGwgdyB3OSBlYSByYSBhcyB3ZSBrbm93IGl0LCBhbmQgSSBm
ZWVsIGZpbmUuXCIiKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="12832"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>