Shuai Meng : vbscript: Fixed Hex.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Apr 3 07:14:59 CDT 2015


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

Author: Shuai Meng <mengshuaicalendr at 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)




More information about the wine-cvs mailing list