From 34e95d1a4cd19051464a18f8c106b43e2053ae99 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sun, 4 Dec 2011 13:20:21 +0100 Subject: [PATCH] unix: make it safe to delete the default loop Fixes a potential free() of non-malloc'ed memory. --- src/unix/core.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/unix/core.c b/src/unix/core.c index 7978e1bb20..9115036050 100644 --- a/src/unix/core.c +++ b/src/unix/core.c @@ -169,7 +169,15 @@ uv_loop_t* uv_loop_new(void) { void uv_loop_delete(uv_loop_t* loop) { uv_ares_destroy(loop, loop->channel); ev_loop_destroy(loop->ev); - free(loop); + +#ifndef NDEBUG + memset(loop, 0, sizeof *loop); +#endif + + if (loop == default_loop_ptr) + default_loop_ptr = NULL; + else + free(loop); }