Nikolay Sivov (@nsivov) commented about dlls/mfplat/main.c:
hr = IMFSchemeHandler_BeginCreateObject(handler, url, flags, props, cancel_cookie ? &inner_cookie : NULL, (IMFAsyncCallback *)&resolver->url_callback, (IUnknown *)result);
- if (SUCCEEDED(hr) && inner_cookie) - resolver_create_cancel_object((IUnknown *)handler, OBJECT_FROM_URL, inner_cookie, cancel_cookie); + if (inner_cookie) + { + if (SUCCEEDED(hr)) + resolver_create_cancel_object((IUnknown *)handler, OBJECT_FROM_URL, inner_cookie, cancel_cookie); + IUnknown_Release(inner_cookie); + }
Does this mean that failed BeginCreateObject() call still returns valid object? I think that's unexpected in general. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7174#note_95334