Module: wine Branch: master Commit: 287d419e5e4553dd28bfe6205f5ec5643d8205b3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=287d419e5e4553dd28bfe6205f...
Author: Shuai Meng mengshuaicalendr@gmail.com Date: Thu Apr 2 22:20:49 2015 +0800
vbscript: Fixed Hex.
---
dlls/vbscript/global.c | 15 +++++++-------- dlls/vbscript/tests/api.vbs | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index ee9168b..1a20527 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -544,6 +544,8 @@ static HRESULT Global_Hex(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA { WCHAR buf[17], *ptr; DWORD n; + HRESULT hres; + int ret;
TRACE("%s\n", debugstr_variant(arg));
@@ -551,19 +553,16 @@ static HRESULT Global_Hex(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA case VT_I2: n = (WORD)V_I2(arg); break; - case VT_I4: - n = V_I4(arg); - break; - case VT_EMPTY: - n = 0; - break; case VT_NULL: if(res) V_VT(res) = VT_NULL; return S_OK; default: - FIXME("unsupported type %s\n", debugstr_variant(arg)); - return E_NOTIMPL; + hres = to_int(arg, &ret); + if(FAILED(hres)) + return hres; + else + n = ret; }
buf[16] = 0; diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 7b97df4..2a365c7 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -233,10 +233,31 @@ TestHex -1, "FFFF" TestHex -16, "FFF0" TestHex -934859845, "C8472BBB" TestHex empty, "0" +TestHex "17", "11" +TestHex 228.5, "E4" +TestHex -32767, "8001" +TestHex -32768, "FFFF8000" +TestHex 2147483647.49, "7FFFFFFF" +TestHex -2147483647.5, "80000000" +newObject.myval = 30.5 +TestHex newObject, "1E" +newObject.myval = "27" +TestHex newObject, "1B" +
Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null))) Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty)))
+Sub TestHexError(num, err_num) + On Error Resume Next + Call Hex(num) + Call ok(Err.number = err_num, "Hex(" & num & ") returns error number " & Err.number & " expected " & err_num) +End Sub + +TestHexError 2147483647.5, 6 +TestHexError 2147483648.51, 6 +TestHexError "test", 13 + Sub TestOct(x, ex, res_type) Call ok(Oct(x) = ex, "Oct(" & x & ") = " & Oct(x) & " expected " & ex) Call ok(getVT(Oct(x)) = res_type, "getVT(Oct(" &x & ")) = " & getVT(Oct(x)) & "expected " & res_type)