Piotr Caban : jscript: Remove NaN related FIXMEs.

Alexandre Julliard julliard at winehq.org
Thu Jun 4 07:59:32 CDT 2009


Module: wine
Branch: master
Commit: eb203a149b2d3a20525ddb2eca4edb2ae59f5887
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=eb203a149b2d3a20525ddb2eca4edb2ae59f5887

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Wed Jun  3 21:11:20 2009 +0200

jscript: Remove NaN related FIXMEs.

---

 dlls/jscript/date.c       |    5 +----
 dlls/jscript/global.c     |    4 ++--
 dlls/jscript/jscript.h    |    7 +++++++
 dlls/jscript/string.c     |    4 ++--
 dlls/jscript/tests/api.js |    6 ++++++
 5 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/dlls/jscript/date.c b/dlls/jscript/date.c
index 0dac085..53ff314 100644
--- a/dlls/jscript/date.c
+++ b/dlls/jscript/date.c
@@ -81,11 +81,8 @@ static const WCHAR setUTCFullYearW[] = {'s','e','t','U','T','C','F','u','l','l',
 /* ECMA-262 3rd Edition    15.9.1.14 */
 static inline DOUBLE time_clip(DOUBLE time)
 {
-    /* FIXME: Handle inf */
-
     if(8.64e15 < time || time < -8.64e15) {
-        FIXME("return NaN\n");
-        return 0.0;
+        return ret_nan();
     }
 
     return floor(time);
diff --git a/dlls/jscript/global.c b/dlls/jscript/global.c
index 01d9eb2..a714f8e 100644
--- a/dlls/jscript/global.c
+++ b/dlls/jscript/global.c
@@ -351,8 +351,8 @@ static HRESULT JSGlobal_parseInt(DispatchEx *dispex, LCID lcid, WORD flags, DISP
     HRESULT hres;
 
     if(!arg_cnt(dp)) {
-        FIXME("NAN\n");
-        return E_NOTIMPL;
+        if(retv) num_set_nan(retv);
+        return S_OK;
     }
 
     if(arg_cnt(dp) >= 2) {
diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h
index 4862b28..6cf3535 100644
--- a/dlls/jscript/jscript.h
+++ b/dlls/jscript/jscript.h
@@ -255,6 +255,13 @@ static inline void num_set_nan(VARIANT *v)
 #endif
 }
 
+static inline DOUBLE ret_nan()
+{
+    VARIANT v;
+    num_set_nan(&v);
+    return V_R8(&v);
+}
+
 static inline void num_set_inf(VARIANT *v, BOOL positive)
 {
     V_VT(v) = VT_R8;
diff --git a/dlls/jscript/string.c b/dlls/jscript/string.c
index eeceb1f..82c1043 100644
--- a/dlls/jscript/string.c
+++ b/dlls/jscript/string.c
@@ -254,8 +254,8 @@ static HRESULT String_charCodeAt(DispatchEx *dispex, LCID lcid, WORD flags, DISP
             return hres;
 
         if(V_VT(&v) != VT_I4 || V_I4(&v) < 0 || V_I4(&v) >= length) {
-            FIXME("NAN\n");
-            return E_FAIL;
+            if(retv) num_set_nan(&v);
+            return S_OK;
         }
 
         idx = V_I4(&v);
diff --git a/dlls/jscript/tests/api.js b/dlls/jscript/tests/api.js
index a17b067..2b6e0b2 100644
--- a/dlls/jscript/tests/api.js
+++ b/dlls/jscript/tests/api.js
@@ -934,6 +934,12 @@ var date = new Date();
 date = new Date(100);
 ok(date.getTime() === 100, "date.getTime() = " + date.getTime());
 ok(Date.prototype.getTime() === 0, "date.prototype.getTime() = " + Date.prototype.getTime());
+date = new Date(8.64e15);
+ok(date.getTime() === 8.64e15, "date.getTime() = " + date.getTime());
+date = new Date(8.64e15+1);
+ok(isNaN(0+date.getTime()), "date.getTime() is not NaN");
+date = new Date(Infinity);
+ok(isNaN(0+date.getTime()), "date.getTime() is not NaN");
 
 ok(typeof(Math.PI) === "number", "typeof(Math.PI) = " + typeof(Math.PI));
 ok(Math.floor(Math.PI*100) === 314, "Math.PI = " + Math.PI);




More information about the wine-cvs mailing list