Jacek Caban : jscript: Fixed some math API assumption that cause test failures on Solaris.

Alexandre Julliard julliard at winehq.org
Thu Dec 30 10:49:58 CST 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Dec 30 14:32:43 2010 +0100

jscript: Fixed some math API assumption that cause test failures on Solaris.

---

 dlls/jscript/global.c |    2 +-
 dlls/jscript/math.c   |   25 +++++++++++++++++++++----
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/dlls/jscript/global.c b/dlls/jscript/global.c
index d1dddcc..24698ac 100644
--- a/dlls/jscript/global.c
+++ b/dlls/jscript/global.c
@@ -290,7 +290,7 @@ static HRESULT JSGlobal_escape(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, D
     for(ptr=str; *ptr; ptr++) {
         if(*ptr > 0xff)
             len += 6;
-        else if(isalnum((char)*ptr) || *ptr=='*' || *ptr=='@' || *ptr=='-'
+        else if(isalnum((unsigned char)*ptr) || *ptr=='*' || *ptr=='@' || *ptr=='-'
                 || *ptr=='_' || *ptr=='+' || *ptr=='.' || *ptr=='/')
             len++;
         else
diff --git a/dlls/jscript/math.c b/dlls/jscript/math.c
index 765e015..9fff6a9 100644
--- a/dlls/jscript/math.c
+++ b/dlls/jscript/math.c
@@ -100,7 +100,13 @@ static HRESULT Math_acos(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, DISPPAR
     if(FAILED(hres))
         return hres;
 
-    if(retv) num_set_val(retv, acos(num_val(&v)));
+    if(retv) {
+        DOUBLE x = num_val(&v);
+        if(x < -1.0 || x > 1.0)
+            num_set_nan(retv);
+        else
+            num_set_val(retv, acos(x));
+    }
     return S_OK;
 }
 
@@ -121,7 +127,13 @@ static HRESULT Math_asin(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, DISPPAR
     if(FAILED(hres))
         return hres;
 
-    if(retv) num_set_val(retv, asin(num_val(&v)));
+    if(retv) {
+        DOUBLE x = num_val(&v);
+        if(x < -1.0 || x > 1.0)
+            num_set_nan(retv);
+        else
+            num_set_val(retv, asin(x));
+    }
     return S_OK;
 }
 
@@ -278,8 +290,13 @@ static HRESULT Math_log(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, DISPPARA
     if(FAILED(hres))
         return hres;
 
-    if(retv)
-        num_set_val(retv, log(num_val(&v)));
+    if(retv) {
+        DOUBLE x = num_val(&v);
+        if(x < -0.0)
+            num_set_nan(retv);
+        else
+            num_set_val(retv, log(x));
+    }
     return S_OK;
 }
 




More information about the wine-cvs mailing list