[PATCH] Add a VT_INT_PTR case for VARIANT_UserSize

Nikolay Sivov nsivov at codeweavers.com
Tue Mar 2 05:06:08 CST 2010


---
 dlls/oleaut32/tests/usrmarshal.c |   11 +++++++++--
 dlls/oleaut32/usrmarshal.c       |    2 ++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/dlls/oleaut32/tests/usrmarshal.c b/dlls/oleaut32/tests/usrmarshal.c
index 9275837..4cd12f2 100644
--- a/dlls/oleaut32/tests/usrmarshal.c
+++ b/dlls/oleaut32/tests/usrmarshal.c
@@ -1215,7 +1215,7 @@ static void test_marshal_VARIANT(void)
     next = VARIANT_UserMarshal(&umcb.Flags, buffer, &v);
     ok(next == buffer + stubMsg.BufferLength, "got %p expect %p\n", next, buffer + stubMsg.BufferLength);
     wirev = (DWORD*)buffer;
-    
+
     check_variant_header(wirev, &v, stubMsg.BufferLength);
     wirev += 5;
     ok(*wirev == 0x4, "wv[5] %08x\n", *wirev);
@@ -1500,8 +1500,15 @@ static void test_marshal_VARIANT(void)
         IUnknown_Release((IUnknown *)heap_unknown);
     }
     HeapFree(GetProcessHeap(), 0, oldbuffer);
-}
 
+    /*** VT_INT_PTR ***/
+    VariantInit(&v);
+    V_VT(&v) = VT_INT_PTR;
+    V_INT_PTR(&v) = 0;
+
+    ul = VARIANT_UserSize(&umcb.Flags, 0, &v);
+    ok(ul == 24, "size %d\n", ul);
+}
 
 START_TEST(usrmarshal)
 {
diff --git a/dlls/oleaut32/usrmarshal.c b/dlls/oleaut32/usrmarshal.c
index 402794c..30b00d8 100644
--- a/dlls/oleaut32/usrmarshal.c
+++ b/dlls/oleaut32/usrmarshal.c
@@ -239,6 +239,8 @@ static unsigned int get_type_size(ULONG *pFlags, VARTYPE vt)
     case VT_DISPATCH:
     case VT_RECORD:
         return 0;
+    case VT_INT_PTR:
+        return sizeof(INT_PTR);
     default:
         FIXME("unhandled VT %d\n", vt);
         return 0;
-- 
1.5.6.5


--=-0T8X2YKLDaZGdnSazYzS--




More information about the wine-patches mailing list