d2d1: Do not release the "dxgi_target" interface on d2d_bitmap_render_target_init() error paths.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Henri Verbeet 2018-10-08 21:55:36 +03:30 committed by Alexandre Julliard
parent c0f00105b5
commit 502bcfe2c6
1 changed files with 4 additions and 1 deletions

View File

@ -794,6 +794,10 @@ HRESULT d2d_bitmap_render_target_init(struct d2d_bitmap_render_target *render_ta
return hr;
}
/* Note that we should be a little careful with the "dxgi_target"
* reference we get here. Because the object is aggregated, releasing the
* interface in any error paths below would end up calling
* d2d_bitmap_render_target_Release(). */
if (FAILED(hr = IUnknown_QueryInterface(render_target->dxgi_inner,
&IID_ID2D1RenderTarget, (void **)&render_target->dxgi_target)))
{
@ -816,7 +820,6 @@ HRESULT d2d_bitmap_render_target_init(struct d2d_bitmap_render_target *render_ta
if (FAILED(hr))
{
WARN("Failed to create target bitmap, hr %#x.\n", hr);
ID2D1RenderTarget_Release(render_target->dxgi_target);
IUnknown_Release(render_target->dxgi_inner);
return hr;
}