From 97c512082c0eccb1606061c4f5435d2065a74bc9 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 20 Jun 2017 12:36:47 +0800 Subject: [PATCH] propsys: Add support for VT_LPWSTR and VT_BSTR to PropVariantToStringAlloc. Signed-off-by: Dmitry Timoshkov Signed-off-by: Alexandre Julliard --- dlls/propsys/propvar.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c index 007fd94b840..af486d68a7a 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 = (lstrlenW(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;