Module: wine Branch: master Commit: e7ded5ddc15ce539e09de99d8a95c7d839e2d6b0 URL: https://gitlab.winehq.org/wine/wine/-/commit/e7ded5ddc15ce539e09de99d8a95c7d...
Author: Rémi Bernon rbernon@codeweavers.com Date: Wed Jan 3 19:34:15 2024 +0100
dmime: Avoid leaking track references in segment Clone and Load.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56117
---
dlls/dmime/segment.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c index 4708b4c5a6f..75e8d706ed4 100644 --- a/dlls/dmime/segment.c +++ b/dlls/dmime/segment.c @@ -442,7 +442,9 @@ static HRESULT WINAPI segment_Clone(IDirectMusicSegment8 *iface, MUSIC_TIME star LIST_FOR_EACH_ENTRY(entry, &This->tracks, struct track_entry, entry) { if (FAILED(hr = IDirectMusicTrack_Clone(entry->pTrack, start, end, &track))) break; - if (FAILED(hr = segment_append_track(clone, track, entry->dwGroupBits, entry->flags))) break; + hr = segment_append_track(clone, track, entry->dwGroupBits, entry->flags); + IDirectMusicTrack_Release(track); + if (FAILED(hr)) break; }
*segment = (IDirectMusicSegment *)&clone->IDirectMusicSegment8_iface; @@ -822,6 +824,7 @@ static HRESULT WINAPI segment_persist_stream_Load(IPersistStream *iface, IStream This->header.mtLength = 1; if (FAILED(hr = wave_track_create_from_chunk(stream, &chunk, &track))) break; hr = segment_append_track(This, (IDirectMusicTrack *)track, 1, 0); + IDirectMusicTrack8_Release(track); break; }