From 1d2adcbe26e7223f09823daff7a0e7c9029dc00b Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 13 Aug 2013 16:04:19 +0200 Subject: [PATCH] Fixed resource leaks. --- channels/parallel/client/parallel_main.c | 1 + channels/serial/client/serial_main.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/channels/parallel/client/parallel_main.c b/channels/parallel/client/parallel_main.c index 6e35c1ee9..16bf4bbb0 100644 --- a/channels/parallel/client/parallel_main.c +++ b/channels/parallel/client/parallel_main.c @@ -286,6 +286,7 @@ static void parallel_free(DEVICE* device) MessageQueue_PostQuit(parallel->queue, 0); WaitForSingleObject(parallel->thread, INFINITE); + Stream_Free(parallel->device.data, TRUE); MessageQueue_Free(parallel->queue); CloseHandle(parallel->thread); diff --git a/channels/serial/client/serial_main.c b/channels/serial/client/serial_main.c index 80be6c88f..cb0852a5a 100644 --- a/channels/serial/client/serial_main.c +++ b/channels/serial/client/serial_main.c @@ -365,10 +365,16 @@ static void serial_free(DEVICE* device) DEBUG_SVC("freeing device"); + /* Stop thread */ SetEvent(serial->stopEvent); + WaitForSingleObject(serial->thread, INFINITE); - /* TODO: free lists */ - + /* Clean up resources */ + Stream_Free(serial->device.data, TRUE); + Queue_Free(serial->queue); + list_free(serial->pending_irps); + CloseHandle(serial->stopEvent); + CloseHandle(serial->thread); free(serial); }