Rebase against 3f6b7c34dbf76fdbf7561a3fe5019713b10d1c9e.

This commit is contained in:
Sebastian Lackner
2017-06-21 00:26:40 +02:00
parent 83a65ef99b
commit e179ddf842
7 changed files with 19 additions and 263 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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