- refine charAt/charCodeAt fix slightly
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Sep 2004 01:52:53 +0000 (01:52 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Sep 2004 01:52:53 +0000 (01:52 +0000)
        * kjs/string_object.cpp: (StringProtoFuncImp::call): Treat undefined the same was as an
        omitted parameter, as we do everywhere else, and as other browsers do here.

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

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/string_object.cpp

index 8ce80e2..c2d5a48 100644 (file)
@@ -1,5 +1,12 @@
 2004-09-26  Darin Adler  <darin@apple.com>
 
+        - refine charAt/charCodeAt fix slightly
+
+        * kjs/string_object.cpp: (StringProtoFuncImp::call): Treat undefined the same was as an
+        omitted parameter, as we do everywhere else, and as other browsers do here.
+
+2004-09-26  Darin Adler  <darin@apple.com>
+
         Reviewed by Kevin.
 
         - fixed <rdar://problem/3816097> REGRESSION: mailblocks, and presumably many other pages, failing because variable not found
index f5a52e6..d1018db 100644 (file)
@@ -362,9 +362,9 @@ Value StringProtoFuncImp::call(ExecState *exec, Object &thisObj, const List &arg
     // handled above
     break;
   case CharAt:
-    // WinIE treats omitted parameter as 0 rather than NaN.
+    // Other browsers treat an omitted parameter as 0 rather than NaN.
     // That doesn't match the ECMA standard, but is needed for site compatibility.
-    dpos = args.size() == 0 ? 0 : a0.toInteger(exec);
+    dpos = a0.isA(UndefinedType) ? 0 : a0.toInteger(exec);
     if (dpos >= 0 && dpos < len) // false for NaN
       u = s.substr(static_cast<int>(dpos), 1);
     else
@@ -372,9 +372,9 @@ Value StringProtoFuncImp::call(ExecState *exec, Object &thisObj, const List &arg
     result = String(u);
     break;
   case CharCodeAt:
-    // WinIE treats omitted parameter as 0 rather than NaN.
+    // Other browsers treat an omitted parameter as 0 rather than NaN.
     // That doesn't match the ECMA standard, but is needed for site compatibility.
-    dpos = args.size() == 0 ? 0 : a0.toInteger(exec);
+    dpos = a0.isA(UndefinedType) ? 0 : a0.toInteger(exec);
     if (dpos >= 0 && dpos < len) { // false for NaN
       UChar c = s[static_cast<int>(dpos)];
       d = (c.high() << 8) + c.low();