On 11/28/2012 17:43, Alexandre Julliard wrote:
Nikolay Sivov <nsivov(a)codeweavers.com> writes:
@@ -137,8 +137,13 @@ static HRESULT WINAPI WshCollection_GetTypeInfoCount(IWshCollection *iface, UINT static HRESULT WINAPI WshCollection_GetTypeInfo(IWshCollection *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { WshCollection *This = impl_from_IWshCollection(iface); + HRESULT hr; + TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); - return get_typeinfo(IWshCollection_tid, ppTInfo); + + hr = get_typeinfo(IWshCollection_tid, ppTInfo); + ITypeInfo_AddRef(*ppTInfo); + return hr; You'd need to check for error first, but the AddRef should really be in get_typeinfo(). I agree about error part. The reason why AddRef shouldn't be in get_typeinfo() is to avoid pointless AddRef/Release when pointer does not go out, and the only case when it's returned to caller is this GetTypeInfo() method.