oleaut32: Don't crash in wrapper if variant resides in read-only memory.
David Hedberg
dhedberg at codeweavers.com
Mon May 30 05:45:32 CDT 2011
---
dlls/oleaut32/variant.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c
index 5d32c3b..72470f6 100644
--- a/dlls/oleaut32/variant.c
+++ b/dlls/oleaut32/variant.c
@@ -2719,15 +2719,12 @@ HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out)
static HRESULT _VarChangeTypeExWrap (VARIANTARG* pvargDest,
VARIANTARG* pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
{
- HRESULT res;
- VARTYPE flags;
+ VARIANT vtmpsrc;
- flags = V_VT(pvargSrc) & ~VT_TYPEMASK;
- V_VT(pvargSrc) &= ~VT_RESERVED;
- res = VariantChangeTypeEx(pvargDest,pvargSrc,lcid,wFlags,vt);
- V_VT(pvargSrc) |= flags;
+ memcpy(&vtmpsrc, pvargSrc, sizeof(VARIANT));
+ V_VT(&vtmpsrc) &= ~VT_RESERVED;
- return res;
+ return VariantChangeTypeEx(pvargDest,&vtmpsrc,lcid,wFlags,vt);
}
/**********************************************************************
--
1.7.5.rc3
More information about the wine-patches
mailing list