Rémi Bernon : winegstreamer: Avoid leaking async ops on release or multiple close.
Module: wine Branch: master Commit: 31aa91c914a4591ea263456cbdf42769963cecfa URL: https://gitlab.winehq.org/wine/wine/-/commit/31aa91c914a4591ea263456cbdf4276... Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Sat Aug 20 22:15:33 2022 +0200 winegstreamer: Avoid leaking async ops on release or multiple close. --- dlls/winegstreamer/wm_asyncreader.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dlls/winegstreamer/wm_asyncreader.c b/dlls/winegstreamer/wm_asyncreader.c index 92c6ba88392..6f4aa303d82 100644 --- a/dlls/winegstreamer/wm_asyncreader.c +++ b/dlls/winegstreamer/wm_asyncreader.c @@ -267,12 +267,20 @@ static HRESULT open_stream(struct async_reader *reader, IWMReaderCallback *callb static void close_stream(struct async_reader *reader) { + struct async_op *op, *next; + if (reader->callback_thread) { WaitForSingleObject(reader->callback_thread, INFINITE); CloseHandle(reader->callback_thread); reader->callback_thread = NULL; } + + LIST_FOR_EACH_ENTRY_SAFE(op, next, &reader->async_ops, struct async_op, entry) + { + list_remove(&op->entry); + free(op); + } } static HRESULT async_reader_queue_op(struct async_reader *reader, enum async_op_type type, void *context)
participants (1)
-
Alexandre Julliard