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