[PATCH 0/1] MR10602: dsound: Fix a few memory leaks.
From: Andrey Gusev <andrey.goosev@gmail.com> --- dlls/dsound/capture.c | 4 +++- dlls/dsound/dsound.c | 4 +++- dlls/dsound/duplex.c | 4 +++- dlls/dsound/propset.c | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c index dfb5e7d921c..b29c0bd9f48 100644 --- a/dlls/dsound/capture.c +++ b/dlls/dsound/capture.c @@ -1297,7 +1297,9 @@ HRESULT IDirectSoundCaptureImpl_Create(IUnknown *outer_unk, REFIID riid, void ** obj->outer_unk = &obj->IUnknown_inner; hr = IUnknown_QueryInterface(&obj->IUnknown_inner, riid, ppv); - IUnknown_Release(&obj->IUnknown_inner); + + if (FAILED(hr)) + IUnknown_Release(&obj->IUnknown_inner); return hr; } diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c index c21090d95e2..f85294e84db 100644 --- a/dlls/dsound/dsound.c +++ b/dlls/dsound/dsound.c @@ -963,7 +963,9 @@ HRESULT IDirectSoundImpl_Create(IUnknown *outer_unk, REFIID riid, void **ppv, BO obj->outer_unk = &obj->IUnknown_inner; hr = IUnknown_QueryInterface(&obj->IUnknown_inner, riid, ppv); - IUnknown_Release(&obj->IUnknown_inner); + + if (FAILED(hr)) + IUnknown_Release(&obj->IUnknown_inner); return hr; } diff --git a/dlls/dsound/duplex.c b/dlls/dsound/duplex.c index a9fef428b28..d5e1a0f3840 100644 --- a/dlls/dsound/duplex.c +++ b/dlls/dsound/duplex.c @@ -296,7 +296,9 @@ HRESULT DSOUND_FullDuplexCreate(REFIID riid, void **ppv) obj->numIfaces = 1; hr = IUnknown_QueryInterface(&obj->IUnknown_iface, riid, ppv); - IUnknown_Release(&obj->IUnknown_iface); + + if (FAILED(hr)) + IUnknown_Release(&obj->IUnknown_iface); return hr; } diff --git a/dlls/dsound/propset.c b/dlls/dsound/propset.c index 7e079599ca7..711029adfe0 100644 --- a/dlls/dsound/propset.c +++ b/dlls/dsound/propset.c @@ -642,7 +642,9 @@ HRESULT IKsPrivatePropertySetImpl_Create(REFIID riid, void **ppv) iks->IKsPropertySet_iface.lpVtbl = &ikspvt; hr = IKsPropertySet_QueryInterface(&iks->IKsPropertySet_iface, riid, ppv); - IKsPropertySet_Release(&iks->IKsPropertySet_iface); + + if (FAILED(hr)) + IKsPropertySet_Release(&iks->IKsPropertySet_iface); return hr; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10602
Huw Davies (@huw) commented about dlls/dsound/capture.c:
obj->outer_unk = &obj->IUnknown_inner;
hr = IUnknown_QueryInterface(&obj->IUnknown_inner, riid, ppv); - IUnknown_Release(&obj->IUnknown_inner); + + if (FAILED(hr)) + IUnknown_Release(&obj->IUnknown_inner);
This doesn't look right. What problem are you trying to solve here? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10602#note_136461
On Thu Apr 16 08:05:41 2026 +0000, Huw Davies wrote:
This doesn't look right. What problem are you trying to solve here? Indeed, it's breaks the thing.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10602#note_136553
This merge request was closed by Andrey Gusev. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10602
participants (3)
-
Andrey Gusev -
Andrey Gusev (@agusev) -
Huw Davies (@huw)