From 47b77c948a6cdc54b78eb3032e1b460a2b20e569 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 22 Oct 2015 14:16:53 +0200 Subject: [PATCH] Fix small memory leak when switching event loops --- src/context.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/context.c b/src/context.c index c3f5b8b1..6dcba656 100644 --- a/src/context.c +++ b/src/context.c @@ -2470,15 +2470,15 @@ getdns_context_detach_eventloop(struct getdns_context* context) } getdns_return_t -getdns_context_set_eventloop(struct getdns_context* context, getdns_eventloop* loop) +getdns_context_set_eventloop(getdns_context* context, getdns_eventloop* loop) { - RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER); - RETURN_IF_NULL(loop , GETDNS_RETURN_INVALID_PARAMETER); - - getdns_return_t r = getdns_context_detach_eventloop(context); - if (r != GETDNS_RETURN_GOOD) - return r; + if (!context || !loop) + return GETDNS_RETURN_INVALID_PARAMETER; + if (context->extension) { + cancel_outstanding_requests(context, 1); + context->extension->vmt->cleanup(context->extension); + } context->extension = loop; return GETDNS_RETURN_GOOD; }