From 0f5fa26052591c68d32b7dacc225e535f2b71615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Wed, 8 Aug 2012 21:02:36 +0800 Subject: [PATCH] bugfix: when init module failed, release message queue --- skynet_server.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/skynet_server.c b/skynet_server.c index f502817f..d4e2dfa2 100644 --- a/skynet_server.c +++ b/skynet_server.c @@ -68,7 +68,7 @@ skynet_context_new(const char * name, const char *param) { char * uid = ctx->handle_name; uid[0] = ':'; _id_to_hex(uid+1, ctx->handle); - ctx->queue = skynet_mq_create(ctx->handle); + struct message_queue * queue = ctx->queue = skynet_mq_create(ctx->handle); // init function maybe use ctx->handle, so it must init at last int r = skynet_module_instance_init(mod, inst, ctx, param); @@ -78,6 +78,9 @@ skynet_context_new(const char * name, const char *param) { ctx->init = 1; skynet_globalmq_push(ctx->queue); return ret; + } else { + // because of ctx->in_global_queue == 1 , so we should release queue here. + skynet_mq_release(queue); } return NULL; } else {