Huw Davies : oleaut32: Preserve the 'auto' features before copying over the masked unmarshaled ones.

Alexandre Julliard julliard at wine.codeweavers.com
Mon May 8 15:38:25 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: df40c966a09fc54012bd00068c8252687df23f4f
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=df40c966a09fc54012bd00068c8252687df23f4f

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon May  8 17:24:51 2006 +0100

oleaut32: Preserve the 'auto' features before copying over the masked unmarshaled ones.

---

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

diff --git a/dlls/oleaut32/tests/usrmarshal.c b/dlls/oleaut32/tests/usrmarshal.c
index a3db860..b0f3808 100644
--- a/dlls/oleaut32/tests/usrmarshal.c
+++ b/dlls/oleaut32/tests/usrmarshal.c
@@ -181,9 +181,7 @@ static void test_marshal_LPSAFEARRAY(voi
         ok(lpsa2 != NULL, "LPSAFEARRAY didn't unmarshal\n");
         SafeArrayGetVartype(lpsa, &vt);
         SafeArrayGetVartype(lpsa2, &vt2);
-        todo_wine {
         ok(vt == vt2, "vts differ %x %x\n", vt, vt2);
-        }
         LPSAFEARRAY_UserFree(&umcb.Flags, &lpsa2);
     }
     HeapFree(GetProcessHeap(), 0, buffer);
@@ -865,9 +863,7 @@ static void test_marshal_VARIANT(void)
         ok(bound == bound2, "array ubounds differ\n");
         SafeArrayGetVartype(V_ARRAY(&v), &vt);
         SafeArrayGetVartype(V_ARRAY(&v2), &vt2);
-        todo_wine {
         ok(vt == vt2, "array vts differ %x %x\n", vt, vt2);
-        }
         VARIANT_UserFree(&umcb.Flags, &v2);
     }
     HeapFree(GetProcessHeap(), 0, buffer);
diff --git a/dlls/oleaut32/usrmarshal.c b/dlls/oleaut32/usrmarshal.c
index 562983a..002df90 100644
--- a/dlls/oleaut32/usrmarshal.c
+++ b/dlls/oleaut32/usrmarshal.c
@@ -1004,7 +1004,8 @@ unsigned char * WINAPI LPSAFEARRAY_UserU
 
     /* be careful about which flags we set since they could be a security
      * risk */
-    (*ppsa)->fFeatures = wiresa->fFeatures & ~(FADF_AUTOSETFLAGS);
+    (*ppsa)->fFeatures &= FADF_AUTOSETFLAGS;
+    (*ppsa)->fFeatures |= (wiresa->fFeatures & ~(FADF_AUTOSETFLAGS));
     /* FIXME: there should be a limit on how large wiresa->cbElements can be */
     (*ppsa)->cbElements = wiresa->cbElements;
     (*ppsa)->cLocks = LOWORD(wiresa->cLocks);




More information about the wine-cvs mailing list