Nikolay Sivov nsivov@codeweavers.com writes:
On 11/28/2012 17:43, Alexandre Julliard wrote:
Nikolay Sivov nsivov@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.
Internal functions should follow COM conventions too, otherwise we'll constantly run into reference counting bugs. AddRef is cheap.