From: Timo Sirainen Date: Mon, 11 Dec 2017 23:02:27 +0000 (+0200) Subject: lib: io_loop_context_new() - deactivate old context X-Git-Tag: 2.3.0.rc1~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76da9d599128d5305a02aae25a26af8cfbf94fc8;p=thirdparty%2Fdovecot%2Fcore.git lib: io_loop_context_new() - deactivate old context Since it changes the current context, it needs to deactivate the old one. --- diff --git a/src/lib/ioloop.c b/src/lib/ioloop.c index 2102e82949..41b556372c 100644 --- a/src/lib/ioloop.c +++ b/src/lib/ioloop.c @@ -876,8 +876,12 @@ struct ioloop_context *io_loop_context_new(struct ioloop *ioloop) ctx->ioloop = ioloop; i_array_init(&ctx->callbacks, 4); - if (ioloop->cur_ctx != NULL) - io_loop_context_unref(&ioloop->cur_ctx); + if (ioloop->cur_ctx != NULL) { + io_loop_context_deactivate(ioloop->cur_ctx); + /* deactivation may remove the cur_ctx */ + if (ioloop->cur_ctx != NULL) + io_loop_context_unref(&ioloop->cur_ctx); + } ioloop->cur_ctx = ctx; return ctx; }