diff --git a/libfreerdp/core/input.c b/libfreerdp/core/input.c index 848a66505..64011b807 100644 --- a/libfreerdp/core/input.c +++ b/libfreerdp/core/input.c @@ -495,6 +495,8 @@ rdpInput* input_new(rdpRdp* rdp) if (input != NULL) { ZeroMemory(input, sizeof(rdpInput)); + + input->queue = MessageQueue_New(); } return input; @@ -507,6 +509,8 @@ void input_free(rdpInput* input) if (input->asynchronous) input_message_proxy_free(input->proxy); + MessageQueue_Free(input->queue); + free(input); } } diff --git a/libfreerdp/core/message.c b/libfreerdp/core/message.c index 720b13797..f772e65fd 100644 --- a/libfreerdp/core/message.c +++ b/libfreerdp/core/message.c @@ -1741,7 +1741,6 @@ rdpUpdateProxy* update_message_proxy_new(rdpUpdate* update) ZeroMemory(message, sizeof(rdpUpdateProxy)); message->update = update; - update->queue = MessageQueue_New(); update_message_register_interface(message, update); } @@ -1752,7 +1751,6 @@ void update_message_proxy_free(rdpUpdateProxy* message) { if (message) { - MessageQueue_Free(message->update->queue); free(message); } } @@ -1940,7 +1938,6 @@ rdpInputProxy* input_message_proxy_new(rdpInput* input) ZeroMemory(proxy, sizeof(rdpInputProxy)); proxy->input = input; - input->queue = MessageQueue_New(); input_message_proxy_register(proxy, input); } @@ -1951,7 +1948,6 @@ void input_message_proxy_free(rdpInputProxy* proxy) { if (proxy) { - MessageQueue_Free(proxy->input->queue); free(proxy); } } diff --git a/libfreerdp/core/update.c b/libfreerdp/core/update.c index c4eaedeec..d812f896c 100644 --- a/libfreerdp/core/update.c +++ b/libfreerdp/core/update.c @@ -1512,6 +1512,8 @@ rdpUpdate* update_new(rdpRdp* rdp) update->SuppressOutput = update_send_suppress_output; update->initialState = TRUE; + + update->queue = MessageQueue_New(); } return update; @@ -1545,6 +1547,8 @@ void update_free(rdpUpdate* update) if (update->asynchronous) update_message_proxy_free(update->proxy); + MessageQueue_Free(update->queue); + free(update); } }