wine-staging/patches/wbemdisp-ISWbemObject-Invoke/0004-vbscript-Add-wmi-test.patch

61 lines
1.8 KiB
Diff
Raw Permalink Normal View History

From 78b65f3146f96f2682b7ae6805ed471448c76aba Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Sun, 30 May 2021 16:34:56 +1000
Subject: [PATCH 4/4] vbscript: Add wmi test
This shows that the data returned by the EnumKey call isn't the same type
as vbscript. At a source leve EnumKey returns a VT_BSTR|VT_ARRAY whereas
vbscript converts it a VT_ARRAY|VT_VARIANT*.
---
dlls/vbscript/tests/lang.vbs | 18 ++++++++++++++++++
dlls/vbscript/tests/run.c | 5 +++++
2 files changed, 23 insertions(+)
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
index a716cdbc65f..b8db3f5becf 100644
--- a/dlls/vbscript/tests/lang.vbs
+++ b/dlls/vbscript/tests/lang.vbs
@@ -1896,4 +1896,22 @@ f1 not 1 = 0
arr (0) = 2 xor -2
+function wmi_array_bstr()
+const HKEY_LOCAL_MACHINE = &H80000002
+Dim oReg
+
+Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
+
+Dim strKeyPath, strSubkey, arrSubKeys
+strKeyPath = "Software\Microsoft\NET Framework Setup\NDP"
+oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
+
+Call ok(getVT(arrSubKeys) = "VT_ARRAY|VT_VARIANT*", "getVT(arrSubKeys) = " & getVT(arrSubKeys))
+For Each strSubkey In arrSubKeys
+Next
+end function
+
+Call wmi_array_bstr()
+
+
reportSuccess()
diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c
index bb33e6576ea..9d0fa1ef7d1 100644
--- a/dlls/vbscript/tests/run.c
+++ b/dlls/vbscript/tests/run.c
@@ -183,6 +183,11 @@ static const char *vt2a(VARIANT *v)
sprintf(buf, "%s*", vt2a(V_BYREF(v)));
return buf;
}
+ else if(V_VT(v) == (VT_BYREF|VT_VARIANT|VT_ARRAY)) {
+ static char buf[64];
+ sprintf(buf, "%s*", vt2a(V_BYREF(v)));
+ return buf;
+ }
switch(V_VT(v)) {
case VT_EMPTY:
--
2.30.2