JavaScriptCore:
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Jan 2009 23:33:54 +0000 (23:33 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 19 Jan 2009 23:33:54 +0000 (23:33 +0000)
2009-01-19  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$'
        <https://bugs.webkit.org/show_bug.cgi?id=23409>
        <rdar://problem/6505723>

        Test: fast/js/string-replace-3.html

        * runtime/StringPrototype.cpp:
        (JSC::substituteBackreferences): Remove code that adds an extra $ -- not sure
        how this ever worked.

LayoutTests:

2009-01-19  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$'
        <https://bugs.webkit.org/show_bug.cgi?id=23409>
        <rdar://problem/6505723>

        * fast/js/resources/string-replace-3.js:
        * fast/js/string-replace-3-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@40042 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/runtime/StringPrototype.cpp
LayoutTests/ChangeLog
LayoutTests/fast/js/resources/string-replace-3.js
LayoutTests/fast/js/string-replace-3-expected.txt

index b6c9f49..58310cd 100644 (file)
@@ -1,3 +1,17 @@
+2009-01-19  Darin Adler  <darin@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$'
+        <https://bugs.webkit.org/show_bug.cgi?id=23409>
+        <rdar://problem/6505723>
+
+        Test: fast/js/string-replace-3.html
+
+        * runtime/StringPrototype.cpp:
+        (JSC::substituteBackreferences): Remove code that adds an extra $ -- not sure
+        how this ever worked.
+
 2009-01-16  Gavin Barraclough  <barraclough@apple.com>
 
         Reviewed by Oliver Hunt.
index 403df04..ddad642 100644 (file)
@@ -146,7 +146,6 @@ static inline UString substituteBackreferences(const UString& replacement, const
             ++i;
             substitutedReplacement.append(replacement.data() + offset, i - offset);
             offset = i + 1;
-            substitutedReplacement.append('$');
             continue;
         }
 
index 66e304c..691893e 100644 (file)
@@ -1,3 +1,14 @@
+2009-01-19  Darin Adler  <darin@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$'
+        <https://bugs.webkit.org/show_bug.cgi?id=23409>
+        <rdar://problem/6505723>
+
+        * fast/js/resources/string-replace-3.js:
+        * fast/js/string-replace-3-expected.txt:
+
 2009-01-19  Simon Fraser  <simon.fraser@apple.com>
 
         Reviewed by Dave Hyatt
index 8d6a95e..dbd6e5d 100644 (file)
@@ -21,12 +21,12 @@ shouldBe("testString.replace('the end', 'nice. $`a picture')",
 shouldBe('testString.replace("feel fin", "am gon$\' By")',
          "\"It's the end of the world as we know it, and I am gone. Bye.\"");
 
-shouldBe("testString.replace(/end/, '$0 $00 $1 $01 $2 $12 $9 $99 $1a $11a')",
-         "\"It's the $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine.\"");
-shouldBe("testString.replace('end', '$0 $00 $1 $01 $2 $12 $9 $99 $1a $11a')",
-         "\"It's the $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine.\"");
+shouldBe("testString.replace(/end/, '$$ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a')",
+         "\"It's the $ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine.\"");
+shouldBe("testString.replace('end', '$$ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a')",
+         "\"It's the $ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine.\"");
 
-shouldBe("testString.replace(/(e)(n)(d) (o)(f) (t)(h)(e) (w)(o)(r)(l)(d)/, '$0 $00 $1 $01 $2 $12 $9 $99 $1a $11a')",
-         "\"It's the $0 $00 e e n l w w9 ea ra as we know it, and I feel fine.\"");
+shouldBe("testString.replace(/(e)(n)(d) (o)(f) (t)(h)(e) (w)(o)(r)(l)(d)/, '$$ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a')",
+         "\"It's the $ $0 $00 e e n l w w9 ea ra as we know it, and I feel fine.\"");
 
 var successfullyParsed = true;
index d9855d7..2004006 100644 (file)
@@ -11,9 +11,9 @@ PASS testString.replace(/(t)(h)(e e)(n)(d)( o)(f)( )(t)(h)(e )([^r]*)(rld)/, 'no
 PASS testString.replace('I feel', 'yet $& just') is "It's the end of the world as we know it, and yet I feel just fine."
 PASS testString.replace('the end', 'nice. $`a picture') is "It's nice. It's a picture of the world as we know it, and I feel fine."
 PASS testString.replace("feel fin", "am gon$' By") is "It's the end of the world as we know it, and I am gone. Bye."
-PASS testString.replace(/end/, '$0 $00 $1 $01 $2 $12 $9 $99 $1a $11a') is "It's the $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine."
-PASS testString.replace('end', '$0 $00 $1 $01 $2 $12 $9 $99 $1a $11a') is "It's the $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine."
-PASS testString.replace(/(e)(n)(d) (o)(f) (t)(h)(e) (w)(o)(r)(l)(d)/, '$0 $00 $1 $01 $2 $12 $9 $99 $1a $11a') is "It's the $0 $00 e e n l w w9 ea ra as we know it, and I feel fine."
+PASS testString.replace(/end/, '$$ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a') is "It's the $ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine."
+PASS testString.replace('end', '$$ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a') is "It's the $ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a of the world as we know it, and I feel fine."
+PASS testString.replace(/(e)(n)(d) (o)(f) (t)(h)(e) (w)(o)(r)(l)(d)/, '$$ $0 $00 $1 $01 $2 $12 $9 $99 $1a $11a') is "It's the $ $0 $00 e e n l w w9 ea ra as we know it, and I feel fine."
 PASS successfullyParsed is true
 
 TEST COMPLETE