Title: [97673] trunk
Revision
97673
Author
barraclo...@apple.com
Date
2011-10-17 16:49:25 -0700 (Mon, 17 Oct 2011)

Log Message

Incorrect behavior from String match/search & undefined pattern
https://bugs.webkit.org/show_bug.cgi?id=70286

Reviewed by Sam weinig.

Source/_javascript_Core: 

* runtime/StringPrototype.cpp:
(JSC::stringProtoFuncMatch):
    - In case of undefined, pattern is "".
(JSC::stringProtoFuncSearch):
    - In case of undefined, pattern is "".

LayoutTests: 

* sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt:
* sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt:
* sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt:
* sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt:
* sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt:
* sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt:
    - Check in passing results.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (97672 => 97673)


--- trunk/LayoutTests/ChangeLog	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/ChangeLog	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,3 +1,18 @@
+2011-10-17  Gavin Barraclough  <barraclo...@apple.com>
+
+        Incorrect behavior from String match/search & undefined pattern
+        https://bugs.webkit.org/show_bug.cgi?id=70286
+
+        Reviewed by Sam weinig.
+
+        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt:
+        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt:
+        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt:
+        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt:
+        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt:
+        * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt:
+            - Check in passing results.
+
 2011-10-17  Chris Fleizach  <cfleiz...@apple.com>
 
         AX: buttons of number type <input> controls are not fully accessible

Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt (97672 => 97673)


--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
 S15.5.4.10_A1_T4
 
-FAIL TypeError: 'null' is not an object (evaluating '__matched.length')
+PASS 
 
 TEST COMPLETE
 

Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt (97672 => 97673)


--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
 S15.5.4.10_A1_T6
 
-FAIL SputnikError: #4.0: __matched = new String("undefined").match(x); __expected = RegExp(x).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS 
 
 TEST COMPLETE
 

Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt (97672 => 97673)


--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
 S15.5.4.10_A1_T7
 
-FAIL SputnikError: #4.0: __matched = String("undefined").match(undefined); __expected = RegExp(undefined).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS 
 
 TEST COMPLETE
 

Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt (97672 => 97673)


--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
 S15.5.4.10_A1_T8
 
-FAIL SputnikError: #4.0: __obj = {toString:function(){}}; __matched = String(__obj).match(void 0); __expected = RegExp(void 0).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS 
 
 TEST COMPLETE
 

Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt (97672 => 97673)


--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
 S15.5.4.10_A1_T9
 
-FAIL SputnikError: #4.0: __obj = {valueOf:function(){}, toString:void 0}; __matched = new String(__obj).match(function(){}()); __expected = RegExp(undefined).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS 
 
 TEST COMPLETE
 

Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt (97672 => 97673)


--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
 S15.5.4.12_A1_T4
 
-FAIL SputnikError: #1: "".search() === 0. Actual: -1
+PASS 
 
 TEST COMPLETE
 

Modified: trunk/Source/_javascript_Core/ChangeLog (97672 => 97673)


--- trunk/Source/_javascript_Core/ChangeLog	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,5 +1,18 @@
 2011-10-17  Gavin Barraclough  <barraclo...@apple.com>
 
+        Incorrect behavior from String match/search & undefined pattern
+        https://bugs.webkit.org/show_bug.cgi?id=70286
+
+        Reviewed by Sam weinig.
+
+        * runtime/StringPrototype.cpp:
+        (JSC::stringProtoFuncMatch):
+            - In case of undefined, pattern is "".
+        (JSC::stringProtoFuncSearch):
+            - In case of undefined, pattern is "".
+
+2011-10-17  Gavin Barraclough  <barraclo...@apple.com>
+
         https://bugs.webkit.org/show_bug.cgi?id=70207
         After deleting __defineSetter__, it is absent but appears in name list
 

Modified: trunk/Source/_javascript_Core/runtime/StringPrototype.cpp (97672 => 97673)


--- trunk/Source/_javascript_Core/runtime/StringPrototype.cpp	2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/Source/_javascript_Core/runtime/StringPrototype.cpp	2011-10-17 23:49:25 UTC (rev 97673)
@@ -705,8 +705,9 @@
          *  ECMA 15.5.4.12 String.prototype.search (regexp)
          *  If regexp is not an object whose [[Class]] property is "RegExp", it is
          *  replaced with the result of the _expression_ new RegExp(regexp).
+         *  Per ECMA 15.10.4.1, if a0 is undefined substitute the empty string.
          */
-        reg = RegExp::create(exec->globalData(), a0.toString(exec), NoFlags);
+        reg = RegExp::create(exec->globalData(), a0.isUndefined() ? UString("") : a0.toString(exec), NoFlags);
     }
     RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
     int pos;
@@ -754,8 +755,9 @@
          *  ECMA 15.5.4.12 String.prototype.search (regexp)
          *  If regexp is not an object whose [[Class]] property is "RegExp", it is
          *  replaced with the result of the _expression_ new RegExp(regexp).
+         *  Per ECMA 15.10.4.1, if a0 is undefined substitute the empty string.
          */
-        reg = RegExp::create(exec->globalData(), a0.toString(exec), NoFlags);
+        reg = RegExp::create(exec->globalData(), a0.isUndefined() ? UString("") : a0.toString(exec), NoFlags);
     }
     RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
     int pos;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to