static ULONG WINAPI xslprocessor_Release( IXSLProcessor *iface ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); ULONG ref = InterlockedDecrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) { if (This->input) IXMLDOMNode_Release(This->input); if (This->output) IStream_Release(This->output); SysFreeString(This->outstr); IXSLTemplate_Release(&This->stylesheet->IXSLTemplate_iface); release_dispex(&This->dispex); heap_free( This ); } return ref; }
static ULONG WINAPI xslprocessor_Release( IXSLProcessor *iface ) { xslprocessor *This = impl_from_IXSLProcessor( iface ); ULONG ref = InterlockedDecrement( &This->ref ); TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) { struct xslprocessor_par *par, *par2; if (This->input) IXMLDOMNode_Release(This->input); if (This->output) IStream_Release(This->output); SysFreeString(This->outstr); LIST_FOR_EACH_ENTRY_SAFE(par, par2, &This->params.list, struct xslprocessor_par, entry) xslprocessor_par_free(&This->params, par); IXSLTemplate_Release(&This->stylesheet->IXSLTemplate_iface); heap_free( This ); } return ref; }