dmime: Free list when SegTrigger track is destroyed.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Alistair Leslie-Hughes 2019-11-14 20:40:27 +01:00 committed by Alexandre Julliard
parent 791e15b562
commit 71b433bfed
1 changed files with 15 additions and 1 deletions

View File

@ -21,6 +21,8 @@
#include "dmime_private.h"
#include "dmobject.h"
#include "wine/heap.h"
WINE_DEFAULT_DEBUG_CHANNEL(dmime);
WINE_DECLARE_DEBUG_CHANNEL(dmfile);
@ -81,7 +83,19 @@ static ULONG WINAPI segment_track_Release(IDirectMusicTrack8 *iface)
TRACE("(%p) ref=%d\n", This, ref);
if (!ref) {
HeapFree(GetProcessHeap(), 0, This);
struct list *cursor, *cursor2;
DMUS_PRIVATE_SEGMENT_ITEM *item;
LIST_FOR_EACH_SAFE(cursor, cursor2, &This->Items) {
item = LIST_ENTRY(cursor, DMUS_PRIVATE_SEGMENT_ITEM, entry);
list_remove(cursor);
if (item->pObject)
IDirectMusicObject_Release(item->pObject);
heap_free(item);
}
heap_free(This);
DMIME_UnlockModule();
}