[1/3] msxml3: Revert "msxml3: AddRef() typeinfo pointers only when we have to."

Nikolay Sivov nsivov at codeweavers.com
Wed Nov 28 23:53:39 CST 2012


Revert "msxml3: AddRef() typeinfo pointers only when we have to."
-------------- next part --------------
>From 4bcda30ce6bcbc866ca6dce2bfb5a22b38fd0912 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu, 29 Nov 2012 07:32:38 -0500
Subject: [PATCH 2/6] Revert "msxml3: AddRef() typeinfo pointers only when we
 have to."

This reverts commit 6e566ce6c24186174ab9c5370a3ffbeccb8389a1.
---
 dlls/msxml3/dispex.c      |   14 ++++++++------
 dlls/msxml3/httprequest.c |   30 ++++++++++++++++++------------
 dlls/msxml3/mxwriter.c    |   17 +++++++++--------
 dlls/msxml3/node.c        |   14 ++++++++++----
 dlls/msxml3/saxreader.c   |   28 ++++++++++++++++++++--------
 dlls/msxml3/xmldoc.c      |   15 +++++++++------
 dlls/msxml3/xmlelem.c     |   14 ++++++++++----
 7 files changed, 84 insertions(+), 48 deletions(-)

diff --git a/dlls/msxml3/dispex.c b/dlls/msxml3/dispex.c
index bd5a46e..3aafc44 100644
--- a/dlls/msxml3/dispex.c
+++ b/dlls/msxml3/dispex.c
@@ -200,6 +200,8 @@ HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo)
     }
 
     *typeinfo = typeinfos[tid];
+
+    ITypeInfo_AddRef(typeinfos[tid]);
     return S_OK;
 }
 
@@ -298,6 +300,7 @@ static dispex_data_t *preprocess_dispex_data(DispatchEx *This)
             ITypeInfo_ReleaseFuncDesc(ti, funcdesc);
         }
 
+        ITypeInfo_Release(ti);
         tid++;
     }
 
@@ -319,6 +322,7 @@ static dispex_data_t *preprocess_dispex_data(DispatchEx *This)
         data->name_table = NULL;
     }
 
+    ITypeInfo_Release(dti);
     return data;
 }
 
@@ -379,16 +383,13 @@ static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pcti
 }
 
 static HRESULT WINAPI DispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo,
-                                              LCID lcid, ITypeInfo **ti)
+                                              LCID lcid, ITypeInfo **ppTInfo)
 {
     DispatchEx *This = impl_from_IDispatchEx(iface);
-    HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
 
-    hr = get_typeinfo(This->data->disp_tid, ti);
-    ITypeInfo_AddRef(*ti);
-    return hr;
+    return get_typeinfo(This->data->disp_tid, ppTInfo);
 }
 
 static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
@@ -602,6 +603,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc
 
     hres = ITypeInfo_Invoke(ti, unk, id, wFlags, pdp, pvarRes, pei, &argerr);
 
+    ITypeInfo_Release(ti);
     IUnknown_Release(unk);
     return hres;
 }
diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index 9d93cca..3f02337 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -1233,16 +1233,13 @@ static HRESULT WINAPI XMLHTTPRequest_GetTypeInfoCount(IXMLHTTPRequest *iface, UI
 }
 
 static HRESULT WINAPI XMLHTTPRequest_GetTypeInfo(IXMLHTTPRequest *iface, UINT iTInfo,
-        LCID lcid, ITypeInfo **ti)
+        LCID lcid, ITypeInfo **ppTInfo)
 {
     httprequest *This = impl_from_IXMLHTTPRequest( iface );
-    HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
 
-    hr = get_typeinfo(IXMLHTTPRequest_tid, ti);
-    ITypeInfo_AddRef(*ti);
-    return hr;
+    return get_typeinfo(IXMLHTTPRequest_tid, ppTInfo);
 }
 
 static HRESULT WINAPI XMLHTTPRequest_GetIDsOfNames(IXMLHTTPRequest *iface, REFIID riid,
@@ -1260,7 +1257,10 @@ static HRESULT WINAPI XMLHTTPRequest_GetIDsOfNames(IXMLHTTPRequest *iface, REFII
 
     hr = get_typeinfo(IXMLHTTPRequest_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -1278,8 +1278,11 @@ static HRESULT WINAPI XMLHTTPRequest_Invoke(IXMLHTTPRequest *iface, DISPID dispI
 
     hr = get_typeinfo(IXMLHTTPRequest_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IXMLHTTPRequest_iface, dispIdMember, wFlags,
                 pDispParams, pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -1606,16 +1609,13 @@ static HRESULT WINAPI ServerXMLHTTPRequest_GetTypeInfoCount(IServerXMLHTTPReques
 }
 
 static HRESULT WINAPI ServerXMLHTTPRequest_GetTypeInfo(IServerXMLHTTPRequest *iface, UINT iTInfo,
-        LCID lcid, ITypeInfo **ti)
+        LCID lcid, ITypeInfo **ppTInfo)
 {
     serverhttp *This = impl_from_IServerXMLHTTPRequest( iface );
-    HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
 
-    hr = get_typeinfo(IServerXMLHTTPRequest_tid, ti);
-    ITypeInfo_AddRef(*ti);
-    return hr;
+    return get_typeinfo(IServerXMLHTTPRequest_tid, ppTInfo);
 }
 
 static HRESULT WINAPI ServerXMLHTTPRequest_GetIDsOfNames(IServerXMLHTTPRequest *iface, REFIID riid,
@@ -1633,7 +1633,10 @@ static HRESULT WINAPI ServerXMLHTTPRequest_GetIDsOfNames(IServerXMLHTTPRequest *
 
     hr = get_typeinfo(IServerXMLHTTPRequest_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -1651,8 +1654,11 @@ static HRESULT WINAPI ServerXMLHTTPRequest_Invoke(IServerXMLHTTPRequest *iface,
 
     hr = get_typeinfo(IServerXMLHTTPRequest_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IServerXMLHTTPRequest_iface, dispIdMember, wFlags,
                 pDispParams, pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c
index ff1f1c8..d62e6a3 100644
--- a/dlls/msxml3/mxwriter.c
+++ b/dlls/msxml3/mxwriter.c
@@ -2180,16 +2180,11 @@ static HRESULT WINAPI VBSAXAttributes_GetTypeInfoCount( IVBSAXAttributes *iface,
 
 static HRESULT WINAPI VBSAXAttributes_GetTypeInfo(
     IVBSAXAttributes *iface,
-    UINT iTInfo, LCID lcid, ITypeInfo** ti )
+    UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo )
 {
     mxattributes *This = impl_from_IVBSAXAttributes( iface );
-    HRESULT hr;
-
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
-
-    hr = get_typeinfo(IVBSAXAttributes_tid, ti);
-    ITypeInfo_AddRef(*ti);
-    return hr;
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+    return get_typeinfo(IVBSAXAttributes_tid, ppTInfo);
 }
 
 static HRESULT WINAPI VBSAXAttributes_GetIDsOfNames(
@@ -2212,7 +2207,10 @@ static HRESULT WINAPI VBSAXAttributes_GetIDsOfNames(
 
     hr = get_typeinfo(IVBSAXAttributes_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -2237,8 +2235,11 @@ static HRESULT WINAPI VBSAXAttributes_Invoke(
 
     hr = get_typeinfo(IVBSAXAttributes_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IVBSAXAttributes_iface, dispIdMember, wFlags,
                 pDispParams, pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 7b6e1ab..867b890 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -1113,15 +1113,15 @@ static HRESULT WINAPI unknode_GetTypeInfo(
     IXMLDOMNode *iface,
     UINT iTInfo,
     LCID lcid,
-    ITypeInfo** ti )
+    ITypeInfo** ppTInfo )
 {
     unknode *This = unknode_from_IXMLDOMNode( iface );
     HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+    hr = get_typeinfo(IXMLDOMNode_tid, ppTInfo);
 
-    hr = get_typeinfo(IXMLDOMNode_tid, ti);
-    ITypeInfo_AddRef(*ti);
     return hr;
 }
 
@@ -1146,7 +1146,10 @@ static HRESULT WINAPI unknode_GetIDsOfNames(
 
     hr = get_typeinfo(IXMLDOMNode_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -1171,8 +1174,11 @@ static HRESULT WINAPI unknode_Invoke(
 
     hr = get_typeinfo(IXMLDOMNode_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDOMNode_iface, dispIdMember, wFlags, pDispParams,
                 pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index 3b167b7..6c0f2ca 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -727,15 +727,15 @@ static HRESULT WINAPI ivbsaxattributes_GetTypeInfoCount( IVBSAXAttributes *iface
 
 static HRESULT WINAPI ivbsaxattributes_GetTypeInfo(
     IVBSAXAttributes *iface,
-    UINT iTInfo, LCID lcid, ITypeInfo** ti )
+    UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo )
 {
     saxlocator *This = impl_from_IVBSAXAttributes( iface );
     HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+    hr = get_typeinfo(IVBSAXAttributes_tid, ppTInfo);
 
-    hr = get_typeinfo(IVBSAXAttributes_tid, ti);
-    ITypeInfo_AddRef(*ti);
     return hr;
 }
 
@@ -759,7 +759,10 @@ static HRESULT WINAPI ivbsaxattributes_GetIDsOfNames(
 
     hr = get_typeinfo(IVBSAXAttributes_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -784,8 +787,11 @@ static HRESULT WINAPI ivbsaxattributes_Invoke(
 
     hr = get_typeinfo(IVBSAXAttributes_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IVBSAXAttributes_iface, dispIdMember, wFlags,
                 pDispParams, pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -1910,15 +1916,15 @@ static HRESULT WINAPI ivbsaxlocator_GetTypeInfoCount( IVBSAXLocator *iface, UINT
 
 static HRESULT WINAPI ivbsaxlocator_GetTypeInfo(
     IVBSAXLocator *iface,
-    UINT iTInfo, LCID lcid, ITypeInfo** ti )
+    UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo )
 {
     saxlocator *This = impl_from_IVBSAXLocator( iface );
     HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+    hr = get_typeinfo(IVBSAXLocator_tid, ppTInfo);
 
-    hr = get_typeinfo(IVBSAXLocator_tid, ti);
-    ITypeInfo_AddRef(*ti);
     return hr;
 }
 
@@ -1942,7 +1948,10 @@ static HRESULT WINAPI ivbsaxlocator_GetIDsOfNames(
 
     hr = get_typeinfo(IVBSAXLocator_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -1967,8 +1976,11 @@ static HRESULT WINAPI ivbsaxlocator_Invoke(
 
     hr = get_typeinfo(IVBSAXLocator_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IVBSAXLocator_iface, dispIdMember, wFlags,
                 pDispParams, pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
diff --git a/dlls/msxml3/xmldoc.c b/dlls/msxml3/xmldoc.c
index 134d80d..1cf8785 100644
--- a/dlls/msxml3/xmldoc.c
+++ b/dlls/msxml3/xmldoc.c
@@ -141,16 +141,13 @@ static HRESULT WINAPI xmldoc_GetTypeInfoCount(IXMLDocument *iface, UINT* pctinfo
 }
 
 static HRESULT WINAPI xmldoc_GetTypeInfo(IXMLDocument *iface, UINT iTInfo,
-                                         LCID lcid, ITypeInfo** ti)
+                                         LCID lcid, ITypeInfo** ppTInfo)
 {
     xmldoc *This = impl_from_IXMLDocument(iface);
-    HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
 
-    hr = get_typeinfo(IXMLDocument_tid, ti);
-    ITypeInfo_AddRef(*ti);
-    return hr;
+    return get_typeinfo(IXMLDocument_tid, ppTInfo);
 }
 
 static HRESULT WINAPI xmldoc_GetIDsOfNames(IXMLDocument *iface, REFIID riid,
@@ -169,7 +166,10 @@ static HRESULT WINAPI xmldoc_GetIDsOfNames(IXMLDocument *iface, REFIID riid,
 
     hr = get_typeinfo(IXMLDocument_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -188,8 +188,11 @@ static HRESULT WINAPI xmldoc_Invoke(IXMLDocument *iface, DISPID dispIdMember,
 
     hr = get_typeinfo(IXMLDocument_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDocument_iface, dispIdMember, wFlags,
                 pDispParams, pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
diff --git a/dlls/msxml3/xmlelem.c b/dlls/msxml3/xmlelem.c
index d3be63e..679e159 100644
--- a/dlls/msxml3/xmlelem.c
+++ b/dlls/msxml3/xmlelem.c
@@ -121,15 +121,15 @@ static HRESULT WINAPI xmlelem_GetTypeInfoCount(IXMLElement *iface, UINT* pctinfo
 }
 
 static HRESULT WINAPI xmlelem_GetTypeInfo(IXMLElement *iface, UINT iTInfo,
-                                          LCID lcid, ITypeInfo** ti)
+                                          LCID lcid, ITypeInfo** ppTInfo)
 {
     xmlelem *This = impl_from_IXMLElement(iface);
     HRESULT hr;
 
-    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ti);
+    TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+    hr = get_typeinfo(IXMLElement_tid, ppTInfo);
 
-    hr = get_typeinfo(IXMLElement_tid, ti);
-    ITypeInfo_AddRef(*ti);
     return hr;
 }
 
@@ -149,7 +149,10 @@ static HRESULT WINAPI xmlelem_GetIDsOfNames(IXMLElement *iface, REFIID riid,
 
     hr = get_typeinfo(IXMLElement_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
@@ -168,8 +171,11 @@ static HRESULT WINAPI xmlelem_Invoke(IXMLElement *iface, DISPID dispIdMember,
 
     hr = get_typeinfo(IXMLElement_tid, &typeinfo);
     if(SUCCEEDED(hr))
+    {
         hr = ITypeInfo_Invoke(typeinfo, &This->IXMLElement_iface, dispIdMember, wFlags, pDispParams,
                 pVarResult, pExcepInfo, puArgErr);
+        ITypeInfo_Release(typeinfo);
+    }
 
     return hr;
 }
-- 
1.7.10.4




More information about the wine-patches mailing list