David Hedberg : oleaut32: Don' t crash in wrapper if variant resides in read-only memory.

Alexandre Julliard julliard at winehq.org
Tue May 31 13:08:20 CDT 2011


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

Author: David Hedberg <dhedberg at codeweavers.com>
Date:   Mon May 30 12:45:32 2011 +0200

oleaut32: Don't crash in wrapper if variant resides in read-only memory.

---

 dlls/oleaut32/variant.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c
index 5d32c3b..5c17eb8 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);
 }
 
 /**********************************************************************




More information about the wine-cvs mailing list