From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/saxreader.c | 123 ++++++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 55 deletions(-) diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c index 0daf6d8425d..801106e3a07 100644 --- a/dlls/msxml3/saxreader.c +++ b/dlls/msxml3/saxreader.c @@ -2890,27 +2890,29 @@ static HRESULT WINAPI saxxmlreader_QueryInterface(IVBSAXXMLReader* iface, REFIID static ULONG WINAPI saxxmlreader_AddRef(IVBSAXXMLReader* iface) { - saxreader *This = impl_from_IVBSAXXMLReader( iface ); - TRACE("%p\n", This ); - return InterlockedIncrement( &This->ref ); + saxreader *reader = impl_from_IVBSAXXMLReader(iface); + LONG refcount = InterlockedIncrement(&reader->ref); + + TRACE("%p refcount %lu.\n", iface, refcount); + + return refcount; } static ULONG WINAPI saxxmlreader_Release( IVBSAXXMLReader* iface) { - saxreader *This = impl_from_IVBSAXXMLReader( iface ); - LONG ref; + saxreader *reader = impl_from_IVBSAXXMLReader(iface); + LONG refcount = InterlockedDecrement(&reader->ref); - TRACE("%p\n", This ); + TRACE("%p refcount %lu.\n", iface, refcount); - ref = InterlockedDecrement( &This->ref ); - if ( ref == 0 ) + if (!refcount) { int i; for (i = 0; i < SAXHandler_Last; i++) { - struct saxanyhandler_iface *saxiface = &This->saxhandlers[i].u.anyhandler; + struct saxanyhandler_iface *saxiface = &reader->saxhandlers[i].u.anyhandler; if (saxiface->handler) IUnknown_Release(saxiface->handler); @@ -2919,14 +2921,15 @@ static ULONG WINAPI saxxmlreader_Release( IUnknown_Release(saxiface->vbhandler); } - SysFreeString(This->xmldecl_version); - free_bstr_pool(&This->pool); + SysFreeString(reader->xmldecl_version); + free_bstr_pool(&reader->pool); - free(This); + free(reader); } - return ref; + return refcount; } + /*** IDispatch ***/ static HRESULT WINAPI saxxmlreader_GetTypeInfoCount( IVBSAXXMLReader *iface, UINT* pctinfo ) { @@ -3017,12 +3020,13 @@ static HRESULT WINAPI saxxmlreader_get_entityResolver( return saxreader_get_handler(This, SAXEntityResolver, TRUE, (void**)resolver); } -static HRESULT WINAPI saxxmlreader_put_entityResolver( - IVBSAXXMLReader* iface, - IVBSAXEntityResolver *resolver) +static HRESULT WINAPI saxxmlreader_putref_entityResolver(IVBSAXXMLReader *iface, IVBSAXEntityResolver *resolver) { - saxreader *This = impl_from_IVBSAXXMLReader( iface ); - return saxreader_put_handler(This, SAXEntityResolver, resolver, TRUE); + saxreader *reader = impl_from_IVBSAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, resolver); + + return saxreader_put_handler(reader, SAXEntityResolver, resolver, TRUE); } static HRESULT WINAPI saxxmlreader_get_contentHandler( @@ -3033,12 +3037,13 @@ static HRESULT WINAPI saxxmlreader_get_contentHandler( return saxreader_get_handler(This, SAXContentHandler, TRUE, (void**)handler); } -static HRESULT WINAPI saxxmlreader_put_contentHandler( - IVBSAXXMLReader* iface, - IVBSAXContentHandler *handler) +static HRESULT WINAPI saxxmlreader_putref_contentHandler(IVBSAXXMLReader *iface, IVBSAXContentHandler *handler) { - saxreader *This = impl_from_IVBSAXXMLReader( iface ); - return saxreader_put_handler(This, SAXContentHandler, handler, TRUE); + saxreader *reader = impl_from_IVBSAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, handler); + + return saxreader_put_handler(reader, SAXContentHandler, handler, TRUE); } static HRESULT WINAPI saxxmlreader_get_dtdHandler( @@ -3049,12 +3054,13 @@ static HRESULT WINAPI saxxmlreader_get_dtdHandler( return saxreader_get_handler(This, SAXDTDHandler, TRUE, (void**)handler); } -static HRESULT WINAPI saxxmlreader_put_dtdHandler( - IVBSAXXMLReader* iface, - IVBSAXDTDHandler *handler) +static HRESULT WINAPI saxxmlreader_putref_dtdHandler(IVBSAXXMLReader *iface, IVBSAXDTDHandler *handler) { - saxreader *This = impl_from_IVBSAXXMLReader( iface ); - return saxreader_put_handler(This, SAXDTDHandler, handler, TRUE); + saxreader *reader = impl_from_IVBSAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, handler); + + return saxreader_put_handler(reader, SAXDTDHandler, handler, TRUE); } static HRESULT WINAPI saxxmlreader_get_errorHandler( @@ -3065,12 +3071,13 @@ static HRESULT WINAPI saxxmlreader_get_errorHandler( return saxreader_get_handler(This, SAXErrorHandler, TRUE, (void**)handler); } -static HRESULT WINAPI saxxmlreader_put_errorHandler( - IVBSAXXMLReader* iface, - IVBSAXErrorHandler *handler) +static HRESULT WINAPI saxxmlreader_putref_errorHandler(IVBSAXXMLReader *iface, IVBSAXErrorHandler *handler) { - saxreader *This = impl_from_IVBSAXXMLReader( iface ); - return saxreader_put_handler(This, SAXErrorHandler, handler, TRUE); + saxreader *reader = impl_from_IVBSAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, handler); + + return saxreader_put_handler(reader, SAXErrorHandler, handler, TRUE); } static HRESULT WINAPI saxxmlreader_get_baseURL( @@ -3139,13 +3146,13 @@ static const struct IVBSAXXMLReaderVtbl VBSAXXMLReaderVtbl = saxxmlreader_getProperty, saxxmlreader_putProperty, saxxmlreader_get_entityResolver, - saxxmlreader_put_entityResolver, + saxxmlreader_putref_entityResolver, saxxmlreader_get_contentHandler, - saxxmlreader_put_contentHandler, + saxxmlreader_putref_contentHandler, saxxmlreader_get_dtdHandler, - saxxmlreader_put_dtdHandler, + saxxmlreader_putref_dtdHandler, saxxmlreader_get_errorHandler, - saxxmlreader_put_errorHandler, + saxxmlreader_putref_errorHandler, saxxmlreader_get_baseURL, saxxmlreader_put_baseURL, saxxmlreader_get_secureBaseURL, @@ -3260,12 +3267,13 @@ static HRESULT WINAPI isaxxmlreader_getEntityResolver( return saxreader_get_handler(This, SAXEntityResolver, FALSE, (void**)resolver); } -static HRESULT WINAPI isaxxmlreader_putEntityResolver( - ISAXXMLReader* iface, - ISAXEntityResolver *resolver) +static HRESULT WINAPI isaxxmlreader_putEntityResolver(ISAXXMLReader *iface, ISAXEntityResolver *resolver) { - saxreader *This = impl_from_ISAXXMLReader( iface ); - return saxreader_put_handler(This, SAXEntityResolver, resolver, FALSE); + saxreader *reader = impl_from_ISAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, resolver); + + return saxreader_put_handler(reader, SAXEntityResolver, resolver, FALSE); } static HRESULT WINAPI isaxxmlreader_getContentHandler( @@ -3276,12 +3284,13 @@ static HRESULT WINAPI isaxxmlreader_getContentHandler( return saxreader_get_handler(This, SAXContentHandler, FALSE, (void**)handler); } -static HRESULT WINAPI isaxxmlreader_putContentHandler( - ISAXXMLReader* iface, - ISAXContentHandler *handler) +static HRESULT WINAPI isaxxmlreader_putContentHandler(ISAXXMLReader *iface, ISAXContentHandler *handler) { - saxreader *This = impl_from_ISAXXMLReader( iface ); - return saxreader_put_handler(This, SAXContentHandler, handler, FALSE); + saxreader *reader = impl_from_ISAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, handler); + + return saxreader_put_handler(reader, SAXContentHandler, handler, FALSE); } static HRESULT WINAPI isaxxmlreader_getDTDHandler( @@ -3292,12 +3301,13 @@ static HRESULT WINAPI isaxxmlreader_getDTDHandler( return saxreader_get_handler(This, SAXDTDHandler, FALSE, (void**)handler); } -static HRESULT WINAPI isaxxmlreader_putDTDHandler( - ISAXXMLReader* iface, - ISAXDTDHandler *handler) +static HRESULT WINAPI isaxxmlreader_putDTDHandler(ISAXXMLReader *iface, ISAXDTDHandler *handler) { - saxreader *This = impl_from_ISAXXMLReader( iface ); - return saxreader_put_handler(This, SAXDTDHandler, handler, FALSE); + saxreader *reader = impl_from_ISAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, handler); + + return saxreader_put_handler(reader, SAXDTDHandler, handler, FALSE); } static HRESULT WINAPI isaxxmlreader_getErrorHandler( @@ -3308,10 +3318,13 @@ static HRESULT WINAPI isaxxmlreader_getErrorHandler( return saxreader_get_handler(This, SAXErrorHandler, FALSE, (void**)handler); } -static HRESULT WINAPI isaxxmlreader_putErrorHandler(ISAXXMLReader* iface, ISAXErrorHandler *handler) +static HRESULT WINAPI isaxxmlreader_putErrorHandler(ISAXXMLReader *iface, ISAXErrorHandler *handler) { - saxreader *This = impl_from_ISAXXMLReader( iface ); - return saxreader_put_handler(This, SAXErrorHandler, handler, FALSE); + saxreader *reader = impl_from_ISAXXMLReader(iface); + + TRACE("%p, %p.\n", iface, handler); + + return saxreader_put_handler(reader, SAXErrorHandler, handler, FALSE); } static HRESULT WINAPI isaxxmlreader_getBaseURL( -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10031