mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-21 17:09:06 -07:00
propsys: Implement PropVariantToBSTR.
This commit is contained in:
parent
477e5de53c
commit
aea38e1e72
2 changed files with 16 additions and 7 deletions
|
@ -334,9 +334,22 @@ HRESULT WINAPI PropVariantToBoolean(REFPROPVARIANT propvarIn, BOOL *ret)
|
||||||
|
|
||||||
HRESULT WINAPI PropVariantToBSTR(REFPROPVARIANT propvar, BSTR *bstr)
|
HRESULT WINAPI PropVariantToBSTR(REFPROPVARIANT propvar, BSTR *bstr)
|
||||||
{
|
{
|
||||||
FIXME("propvar %p, bstr %p.\n", propvar, bstr);
|
WCHAR *str;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
TRACE("propvar %p, propvar->vt %#x, bstr %p.\n",
|
||||||
|
propvar, propvar ? propvar->vt : 0, bstr);
|
||||||
|
|
||||||
|
if (FAILED(hr = PropVariantToStringAlloc(propvar, &str)))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
*bstr = SysAllocString(str);
|
||||||
|
CoTaskMemFree(str);
|
||||||
|
|
||||||
|
if (!*bstr)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI PropVariantToBuffer(REFPROPVARIANT propvarIn, void *ret, UINT cb)
|
HRESULT WINAPI PropVariantToBuffer(REFPROPVARIANT propvarIn, void *ret, UINT cb)
|
||||||
|
|
|
@ -1679,10 +1679,10 @@ static void test_PropVariantToBSTR(void)
|
||||||
check_PropVariantToBSTR(VT_BOOL, boolVal, TRUE, L"1");
|
check_PropVariantToBSTR(VT_BOOL, boolVal, TRUE, L"1");
|
||||||
check_PropVariantToBSTR(VT_R4, fltVal, 0.123f, L"0.123000003397464752");
|
check_PropVariantToBSTR(VT_R4, fltVal, 0.123f, L"0.123000003397464752");
|
||||||
check_PropVariantToBSTR(VT_R8, dblVal, 0.456, L"0.456");
|
check_PropVariantToBSTR(VT_R8, dblVal, 0.456, L"0.456");
|
||||||
|
}
|
||||||
check_PropVariantToBSTR(VT_CLSID, puuid, (CLSID *)&dummy_guid, dummy_guid_str);
|
check_PropVariantToBSTR(VT_CLSID, puuid, (CLSID *)&dummy_guid, dummy_guid_str);
|
||||||
check_PropVariantToBSTR(VT_LPSTR, pszVal, (char *)topic, topicW);
|
check_PropVariantToBSTR(VT_LPSTR, pszVal, (char *)topic, topicW);
|
||||||
check_PropVariantToBSTR(VT_LPWSTR, pwszVal, (WCHAR *)topicW, topicW);
|
check_PropVariantToBSTR(VT_LPWSTR, pwszVal, (WCHAR *)topicW, topicW);
|
||||||
}
|
|
||||||
|
|
||||||
PropVariantInit(&propvar);
|
PropVariantInit(&propvar);
|
||||||
propvar.vt = VT_FILETIME;
|
propvar.vt = VT_FILETIME;
|
||||||
|
@ -1726,15 +1726,11 @@ static void test_PropVariantToBSTR(void)
|
||||||
propvar.vt = VT_BSTR;
|
propvar.vt = VT_BSTR;
|
||||||
propvar.bstrVal = SysAllocStringLen(test_bstr, ARRAY_SIZE(test_bstr));
|
propvar.bstrVal = SysAllocStringLen(test_bstr, ARRAY_SIZE(test_bstr));
|
||||||
hr = PropVariantToBSTR(&propvar, &bstr);
|
hr = PropVariantToBSTR(&propvar, &bstr);
|
||||||
todo_wine
|
|
||||||
ok(hr == S_OK, "PropVariantToBSTR returned %#lx.\n", hr);
|
ok(hr == S_OK, "PropVariantToBSTR returned %#lx.\n", hr);
|
||||||
if (hr == S_OK)
|
|
||||||
{
|
|
||||||
length = SysStringLen(bstr);
|
length = SysStringLen(bstr);
|
||||||
ok(length == wcslen(test_bstr), "Unexpected length %u.\n", length);
|
ok(length == wcslen(test_bstr), "Unexpected length %u.\n", length);
|
||||||
ok(!wcscmp(bstr, test_bstr), "Unexpected bstr %s.", debugstr_wn(bstr, ARRAY_SIZE(test_bstr)));
|
ok(!wcscmp(bstr, test_bstr), "Unexpected bstr %s.", debugstr_wn(bstr, ARRAY_SIZE(test_bstr)));
|
||||||
SysFreeString(bstr);
|
SysFreeString(bstr);
|
||||||
}
|
|
||||||
PropVariantClear(&propvar);
|
PropVariantClear(&propvar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue