Module: wine Branch: master Commit: 45aee4fd6c6b1aca529d543b73cd3d8efcaa2a92 URL: http://source.winehq.org/git/wine.git/?a=commit;h=45aee4fd6c6b1aca529d543b73...
Author: Jacek Caban jacek@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; }