Vincent Povirk : propsys: Use integer conversion functions in PropVariantCompareEx.
Alexandre Julliard
julliard at winehq.org
Fri Sep 14 10:54:20 CDT 2012
Module: wine
Branch: master
Commit: 60dae84bc69ad357c803718170b0099a536a681b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=60dae84bc69ad357c803718170b0099a536a681b
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Thu Sep 13 17:16:26 2012 -0500
propsys: Use integer conversion functions in PropVariantCompareEx.
---
dlls/propsys/propvar.c | 72 ++++++++++++++++++++++++++++++++++++++++++
dlls/propsys/tests/propsys.c | 4 +-
2 files changed, 74 insertions(+), 2 deletions(-)
diff --git a/dlls/propsys/propvar.c b/dlls/propsys/propvar.c
index 28100a0..69b2e60 100644
--- a/dlls/propsys/propvar.c
+++ b/dlls/propsys/propvar.c
@@ -215,9 +215,81 @@ HRESULT WINAPI PropVariantToUInt64(REFPROPVARIANT propvarIn, ULONGLONG *ret)
HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc,
PROPVAR_CHANGE_FLAGS flags, VARTYPE vt)
{
+ HRESULT hr;
+
FIXME("(%p, %p, %d, %d, %d): semi-stub!\n", ppropvarDest, propvarSrc,
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)
{
case VT_FILETIME:
diff --git a/dlls/propsys/tests/propsys.c b/dlls/propsys/tests/propsys.c
index c9df1c9..a18d6b1 100644
--- a/dlls/propsys/tests/propsys.c
+++ b/dlls/propsys/tests/propsys.c
@@ -716,13 +716,13 @@ static void test_PropVariantCompare(void)
ok(res == -1, "res=%i\n", res);
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);
ok(res == -1, "res=%i\n", res);
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);
todo_wine ok(res == 0, "res=%i\n", res);
More information about the wine-cvs
mailing list