Module: wine Branch: refs/heads/master Commit: df40c966a09fc54012bd00068c8252687df23f4f URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=df40c966a09fc54012bd0006...
Author: Huw Davies huw@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);