2008/9/7 Gerald Pfeifer gerald@pfeifer.com:
--- dlls/atl/registrar.c 7 May 2008 12:06:02 -0000 1.29 +++ dlls/atl/registrar.c 7 Sep 2008 13:42:54 -0000 @@ -661,7 +661,7 @@ static const IRegistrarVtbl RegistrarVtb Registrar_ResourceUnregister, };
-static HRESULT Registrar_create(const IUnknown *pUnkOuter, REFIID riid, void **ppvObject) +static HRESULT Registrar_create(REFIID riid, void **ppvObject) { Registrar *ret;
@@ -711,7 +711,7 @@ static HRESULT WINAPI RegistrarCF_Create REFIID riid, void **ppvObject) { TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject);
- return Registrar_create(pUnkOuter, riid, ppvObject);
- return Registrar_create(riid, ppvObject);
}
A test needs to be added to see whether or not the Registrar class factory supports aggregation. If it does then a FIXME should be emitted. If not then an ERR may be emitted and CLASS_E_NOAGGREGATION returned. Just removing pUnkOuter isn't the right thing to do.
On Tue, 9 Sep 2008, Rob Shearman wrote:
-static HRESULT Registrar_create(const IUnknown *pUnkOuter, REFIID riid, void **ppvObject) +static HRESULT Registrar_create(REFIID riid, void **ppvObject)
A test needs to be added to see whether or not the Registrar class factory supports aggregation. If it does then a FIXME should be emitted. If not then an ERR may be emitted and CLASS_E_NOAGGREGATION returned. Just removing pUnkOuter isn't the right thing to do.
Fair point! Sadly, this is beyond my expertise in this area and I hope that someone with that expertise is going to help with that?
Is this something you could look at? (Based on your analysis consider my patch redrawn...)
Gerald