From fd543f5aa36e35669a97402707d0a7e07bc86284 Mon Sep 17 00:00:00 2001 From: David Hedberg Date: Mon, 30 May 2011 12:45:32 +0200 Subject: [PATCH] oleaut32: Don't crash in wrapper if variant resides in read-only memory. --- dlls/oleaut32/variant.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index 5d32c3b07a6..5c17eb85394 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -2719,15 +2719,10 @@ 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; + VARIANTARG vtmpsrc = *pvargSrc; - flags = V_VT(pvargSrc) & ~VT_TYPEMASK; - V_VT(pvargSrc) &= ~VT_RESERVED; - res = VariantChangeTypeEx(pvargDest,pvargSrc,lcid,wFlags,vt); - V_VT(pvargSrc) |= flags; - - return res; + V_VT(&vtmpsrc) &= ~VT_RESERVED; + return VariantChangeTypeEx(pvargDest,&vtmpsrc,lcid,wFlags,vt); } /**********************************************************************