forked from Mirrors/wine-wine
propsys: Use integer conversion functions in PropVariantCompareEx.
parent
c66b5ac4c3
commit
60dae84bc6
|
@ -215,9 +215,81 @@ HRESULT WINAPI PropVariantToUInt64(REFPROPVARIANT propvarIn, ULONGLONG *ret)
|
||||||
HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc,
|
HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc,
|
||||||
PROPVAR_CHANGE_FLAGS flags, VARTYPE vt)
|
PROPVAR_CHANGE_FLAGS flags, VARTYPE vt)
|
||||||
{
|
{
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
FIXME("(%p, %p, %d, %d, %d): semi-stub!\n", ppropvarDest, propvarSrc,
|
FIXME("(%p, %p, %d, %d, %d): semi-stub!\n", ppropvarDest, propvarSrc,
|
||||||
propvarSrc->vt, flags, vt);
|
propvarSrc->vt, flags, vt);
|
||||||
|
|
||||||
|
switch (vt)
|
||||||
|
{
|
||||||
|
case VT_I2:
|
||||||
|
{
|
||||||
|
SHORT res;
|
||||||
|
hr = PropVariantToInt16(propvarSrc, &res);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
ppropvarDest->vt = VT_I2;
|
||||||
|
ppropvarDest->u.iVal = res;
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
case VT_UI2:
|
||||||
|
{
|
||||||
|
USHORT res;
|
||||||
|
hr = PropVariantToUInt16(propvarSrc, &res);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
ppropvarDest->vt = VT_UI2;
|
||||||
|
ppropvarDest->u.uiVal = res;
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
case VT_I4:
|
||||||
|
{
|
||||||
|
LONG res;
|
||||||
|
hr = PropVariantToInt32(propvarSrc, &res);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
ppropvarDest->vt = VT_I4;
|
||||||
|
ppropvarDest->u.lVal = res;
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
case VT_UI4:
|
||||||
|
{
|
||||||
|
ULONG res;
|
||||||
|
hr = PropVariantToUInt32(propvarSrc, &res);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
ppropvarDest->vt = VT_UI4;
|
||||||
|
ppropvarDest->u.ulVal = res;
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
case VT_I8:
|
||||||
|
{
|
||||||
|
LONGLONG res;
|
||||||
|
hr = PropVariantToInt64(propvarSrc, &res);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
ppropvarDest->vt = VT_I8;
|
||||||
|
ppropvarDest->u.hVal.QuadPart = res;
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
case VT_UI8:
|
||||||
|
{
|
||||||
|
ULONGLONG res;
|
||||||
|
hr = PropVariantToUInt64(propvarSrc, &res);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
ppropvarDest->vt = VT_UI8;
|
||||||
|
ppropvarDest->u.uhVal.QuadPart = res;
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (propvarSrc->vt)
|
switch (propvarSrc->vt)
|
||||||
{
|
{
|
||||||
case VT_FILETIME:
|
case VT_FILETIME:
|
||||||
|
|
|
@ -716,13 +716,13 @@ static void test_PropVariantCompare(void)
|
||||||
ok(res == -1, "res=%i\n", res);
|
ok(res == -1, "res=%i\n", res);
|
||||||
|
|
||||||
res = PropVariantCompareEx(&i4_large, &i2_0, 0, 0);
|
res = PropVariantCompareEx(&i4_large, &i2_0, 0, 0);
|
||||||
todo_wine ok(res == 1, "res=%i\n", res);
|
ok(res == 1, "res=%i\n", res);
|
||||||
|
|
||||||
res = PropVariantCompareEx(&i4_largeneg, &i2_0, 0, 0);
|
res = PropVariantCompareEx(&i4_largeneg, &i2_0, 0, 0);
|
||||||
ok(res == -1, "res=%i\n", res);
|
ok(res == -1, "res=%i\n", res);
|
||||||
|
|
||||||
res = PropVariantCompareEx(&i2_2, &i4_2, 0, 0);
|
res = PropVariantCompareEx(&i2_2, &i4_2, 0, 0);
|
||||||
todo_wine ok(res == 0, "res=%i\n", res);
|
ok(res == 0, "res=%i\n", res);
|
||||||
|
|
||||||
res = PropVariantCompareEx(&i2_2, &str_2, 0, 0);
|
res = PropVariantCompareEx(&i2_2, &str_2, 0, 0);
|
||||||
todo_wine ok(res == 0, "res=%i\n", res);
|
todo_wine ok(res == 0, "res=%i\n", res);
|
||||||
|
|
Loading…
Reference in New Issue