wine/dlls/oleaut32 usrmarshal.c

Alexandre Julliard julliard at wine.codeweavers.com
Mon Oct 31 09:43:53 CST 2005


ChangeSet ID:	20997
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/10/31 09:43:53

Modified files:
	dlls/oleaut32  : usrmarshal.c 

Log message:
	Huw Davies <huw at codeweavers.com>
	Deal with pExcepInfo == NULL.

Patch: http://cvs.winehq.org/patch.py?id=20997

Old revision  New revision  Changes     Path
 1.11          1.12          +9 -0       wine/dlls/oleaut32/usrmarshal.c

Index: wine/dlls/oleaut32/usrmarshal.c
diff -u -p wine/dlls/oleaut32/usrmarshal.c:1.11 wine/dlls/oleaut32/usrmarshal.c:1.12
--- wine/dlls/oleaut32/usrmarshal.c	31 Oct 2005 15:43:53 -0000
+++ /dev/null	31 Oct 2005 15:43:53 -0000
@@ -537,6 +537,7 @@ HRESULT CALLBACK IDispatch_Invoke_Proxy(
   VARIANTARG* rgVarRef = NULL;
   UINT u, cVarRef;
   UINT uArgErr;
+  EXCEPINFO ExcepInfo;
 
   TRACE("(%p)->(%ld,%s,%lx,%x,%p,%p,%p,%p)\n", This,
         dispIdMember, debugstr_guid(riid),
@@ -546,6 +547,7 @@ HRESULT CALLBACK IDispatch_Invoke_Proxy(
   /* [out] args can't be null, use dummy vars if needed */
   if (!pVarResult) pVarResult = &VarResult;
   if (!puArgErr) puArgErr = &uArgErr;
+  if (!pExcepInfo) pExcepInfo = &ExcepInfo;
 
   /* count by-ref args */
   for (cVarRef=0,u=0; u<pDispParams->cArgs; u++) {
@@ -596,6 +598,13 @@ HRESULT CALLBACK IDispatch_Invoke_Proxy(
     CoTaskMemFree(rgVarRef);
     CoTaskMemFree(rgVarRefIdx);
   }
+
+  if(pExcepInfo == &ExcepInfo)
+  {
+    SysFreeString(pExcepInfo->bstrSource);
+    SysFreeString(pExcepInfo->bstrDescription);
+    SysFreeString(pExcepInfo->bstrHelpFile);
+  }
   return hr;
 }
 



More information about the wine-cvs mailing list