You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 3f6b7c34dbf76fdbf7561a3fe5019713b10d1c9e.
This commit is contained in:
@@ -1,49 +0,0 @@
|
||||
From ad76cf41e0a79a75c0acb3a8aae6caa6dab9549c Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Fri, 31 Mar 2017 13:39:41 +0800
|
||||
Subject: propsys: Add support for VT_I1 and VT_UI1 to PropVariantChangeType.
|
||||
|
||||
---
|
||||
dlls/propsys/propvar.c | 26 ++++++++++++++++++++++++++
|
||||
1 file changed, 26 insertions(+)
|
||||
|
||||
diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c
|
||||
index 3fee67ad276..007fd94b840 100644
|
||||
--- a/dlls/propsys/propvar.c
|
||||
+++ b/dlls/propsys/propvar.c
|
||||
@@ -264,6 +264,32 @@ HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT p
|
||||
|
||||
switch (vt)
|
||||
{
|
||||
+ case VT_I1:
|
||||
+ {
|
||||
+ LONGLONG res;
|
||||
+
|
||||
+ hr = PROPVAR_ConvertNumber(propvarSrc, 8, TRUE, &res);
|
||||
+ if (SUCCEEDED(hr))
|
||||
+ {
|
||||
+ ppropvarDest->vt = VT_I1;
|
||||
+ ppropvarDest->u.cVal = (char)res;
|
||||
+ }
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
+ case VT_UI1:
|
||||
+ {
|
||||
+ LONGLONG res;
|
||||
+
|
||||
+ hr = PROPVAR_ConvertNumber(propvarSrc, 8, FALSE, &res);
|
||||
+ if (SUCCEEDED(hr))
|
||||
+ {
|
||||
+ ppropvarDest->vt = VT_UI1;
|
||||
+ ppropvarDest->u.bVal = (UCHAR)res;
|
||||
+ }
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
case VT_I2:
|
||||
{
|
||||
SHORT res;
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
From 08d1f368bb9d12d89f334a7fd34f06895b217087 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Fri, 31 Mar 2017 13:43:52 +0800
|
||||
Subject: propsys: Add support for VT_LPWSTR and VT_BSTR to
|
||||
PropVariantToStringAlloc.
|
||||
|
||||
---
|
||||
dlls/propsys/propvar.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c
|
||||
index 007fd94b840..a359bc724fc 100644
|
||||
--- a/dlls/propsys/propvar.c
|
||||
+++ b/dlls/propsys/propvar.c
|
||||
@@ -224,6 +224,7 @@ HRESULT WINAPI PropVariantToStringAlloc(REFPROPVARIANT propvarIn, WCHAR **ret)
|
||||
res = CoTaskMemAlloc(1*sizeof(WCHAR));
|
||||
res[0] = '\0';
|
||||
break;
|
||||
+
|
||||
case VT_LPSTR:
|
||||
if(propvarIn->u.pszVal)
|
||||
{
|
||||
@@ -237,6 +238,18 @@ HRESULT WINAPI PropVariantToStringAlloc(REFPROPVARIANT propvarIn, WCHAR **ret)
|
||||
MultiByteToWideChar(CP_ACP, 0, propvarIn->u.pszVal, -1, res, len);
|
||||
}
|
||||
break;
|
||||
+
|
||||
+ case VT_LPWSTR:
|
||||
+ case VT_BSTR:
|
||||
+ if (propvarIn->u.pwszVal)
|
||||
+ {
|
||||
+ DWORD size = (strlenW(propvarIn->u.pwszVal) + 1) * sizeof(WCHAR);
|
||||
+ res = CoTaskMemAlloc(size);
|
||||
+ if(!res) return E_OUTOFMEMORY;
|
||||
+ memcpy(res, propvarIn->u.pwszVal, size);
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
FIXME("Unsupported conversion (%d)\n", propvarIn->vt);
|
||||
hr = E_FAIL;
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
From a862cb25cefe885d4de212c21fc8a62dc8b8c682 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Fri, 31 Mar 2017 13:45:23 +0800
|
||||
Subject: propsys: Add support for VT_BSTR to PropVariantChangeType.
|
||||
|
||||
---
|
||||
dlls/propsys/propvar.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c
|
||||
index a359bc724fc..92399f56576 100644
|
||||
--- a/dlls/propsys/propvar.c
|
||||
+++ b/dlls/propsys/propvar.c
|
||||
@@ -369,7 +369,9 @@ HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT p
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
+
|
||||
case VT_LPWSTR:
|
||||
+ case VT_BSTR:
|
||||
{
|
||||
WCHAR *res;
|
||||
hr = PropVariantToStringAlloc(propvarSrc, &res);
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From 96f68fa277d1f8aed675d962f8cfa898b06805d7 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Sun, 7 May 2017 17:19:33 +0800
|
||||
Subject: propsys: Make VT_FILETIME handling by PropVariantChangeType more
|
||||
implicit.
|
||||
|
||||
---
|
||||
dlls/propsys/propvar.c | 22 +++++++++-------------
|
||||
1 file changed, 9 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c
|
||||
index 92399f56576..725428ebad2 100644
|
||||
--- a/dlls/propsys/propvar.c
|
||||
+++ b/dlls/propsys/propvar.c
|
||||
@@ -36,12 +36,11 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(propsys);
|
||||
|
||||
-static HRESULT PROPVAR_ConvertFILETIME(PROPVARIANT *ppropvarDest,
|
||||
- REFPROPVARIANT propvarSrc, VARTYPE vt)
|
||||
+static HRESULT PROPVAR_ConvertFILETIME(const FILETIME *ft, PROPVARIANT *ppropvarDest, VARTYPE vt)
|
||||
{
|
||||
SYSTEMTIME time;
|
||||
|
||||
- FileTimeToSystemTime(&propvarSrc->u.filetime, &time);
|
||||
+ FileTimeToSystemTime(ft, &time);
|
||||
|
||||
switch (vt)
|
||||
{
|
||||
@@ -272,9 +271,12 @@ HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT p
|
||||
FIXME("(%p, %p, %d, %d, %d): semi-stub!\n", ppropvarDest, propvarSrc,
|
||||
propvarSrc->vt, flags, vt);
|
||||
|
||||
- if(vt == propvarSrc->vt)
|
||||
+ if (vt == propvarSrc->vt)
|
||||
return PropVariantCopy(ppropvarDest, propvarSrc);
|
||||
|
||||
+ if (propvarSrc->vt == VT_FILETIME)
|
||||
+ return PROPVAR_ConvertFILETIME(&propvarSrc->u.filetime, ppropvarDest, vt);
|
||||
+
|
||||
switch (vt)
|
||||
{
|
||||
case VT_I1:
|
||||
@@ -382,17 +384,11 @@ HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT p
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
- }
|
||||
|
||||
- switch (propvarSrc->vt)
|
||||
- {
|
||||
- case VT_FILETIME:
|
||||
- return PROPVAR_ConvertFILETIME(ppropvarDest, propvarSrc, vt);
|
||||
- default:
|
||||
- FIXME("Unhandled source type: %d\n", propvarSrc->vt);
|
||||
+ default:
|
||||
+ FIXME("Unhandled dest type: %d\n", vt);
|
||||
+ return E_FAIL;
|
||||
}
|
||||
-
|
||||
- return E_FAIL;
|
||||
}
|
||||
|
||||
static void PROPVAR_GUIDToWSTR(REFGUID guid, WCHAR *str)
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
From e84408e24968a947de9fcfde7605e5f200d24a01 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Sun, 7 May 2017 17:25:53 +0800
|
||||
Subject: propsys: Add support for VT_LPSTR to PropVariantChangeType. (v2)
|
||||
|
||||
---
|
||||
dlls/propsys/propvar.c | 25 +++++++++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c
|
||||
index 725428ebad2..8233d2f362f 100644
|
||||
--- a/dlls/propsys/propvar.c
|
||||
+++ b/dlls/propsys/propvar.c
|
||||
@@ -385,6 +385,31 @@ HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT p
|
||||
return hr;
|
||||
}
|
||||
|
||||
+ case VT_LPSTR:
|
||||
+ {
|
||||
+ WCHAR *resW;
|
||||
+ hr = PropVariantToStringAlloc(propvarSrc, &resW);
|
||||
+ if (SUCCEEDED(hr))
|
||||
+ {
|
||||
+ char *res;
|
||||
+ DWORD len;
|
||||
+
|
||||
+ len = WideCharToMultiByte(CP_ACP, 0, resW, -1, NULL, 0, NULL, NULL);
|
||||
+ res = CoTaskMemAlloc(len);
|
||||
+ if (res)
|
||||
+ {
|
||||
+ WideCharToMultiByte(CP_ACP, 0, resW, -1, res, len, NULL, NULL);
|
||||
+ ppropvarDest->vt = VT_LPSTR;
|
||||
+ ppropvarDest->u.pszVal = res;
|
||||
+ }
|
||||
+ else
|
||||
+ hr = E_OUTOFMEMORY;
|
||||
+
|
||||
+ CoTaskMemFree(resW);
|
||||
+ }
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
default:
|
||||
FIXME("Unhandled dest type: %d\n", vt);
|
||||
return E_FAIL;
|
||||
--
|
||||
2.12.2
|
||||
|
||||
Reference in New Issue
Block a user