[PATCH] mp3dmod: Support COM aggregation.
Zebediah Figura
zfigura at codeweavers.com
Fri Jun 22 13:36:20 CDT 2018
On 06/22/2018 01:22 PM, Jacek Caban wrote:
> Hi Zebediah,
>
> On 06/22/2018 08:06 PM, Zebediah Figura wrote:
>> -static HRESULT create_mp3_decoder(REFIID iid, void **obj)
>> +static HRESULT create_mp3_decoder(IUnknown *outer, REFIID iid, void **obj)
>> {
>> struct mp3_decoder *This;
>> int err;
>> @@ -424,15 +457,17 @@ static HRESULT create_mp3_decoder(REFIID iid, void **obj)
>> if (!(This = heap_alloc_zero(sizeof(*This))))
>> return E_OUTOFMEMORY;
>>
>> - This->IMediaObject_iface.lpVtbl = &IMediaObject_vtbl;
>> + This->IUnknown_inner.lpVtbl = &Unknown_vtbl;
>> + This->IMediaObject_iface.lpVtbl = &MediaObject_vtbl;
>> This->ref = 0;
>> + This->outer = outer ? outer : &This->IUnknown_inner;
>>
>> mpg123_init();
>> This->mh = mpg123_new(NULL, &err);
>> mpg123_open_feed(This->mh);
>> mpg123_format_none(This->mh);
>>
>> - return IMediaObject_QueryInterface(&This->IMediaObject_iface, iid, obj);
>> + return IUnknown_QueryInterface(&This->IUnknown_inner, iid, obj);
>
>
> This leaks in non-aggregated case if QueryInterface fails.
>
>
> Jacek
>
Thanks; I've sent an updated patch.
More information about the wine-devel
mailing list