From 992815cc3da3a440dbc56c61925a4e5443b58073 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Sat, 2 Aug 2014 14:39:02 -0700 Subject: [PATCH] Avoid libuv resource leaks (fixes #395) --- include/mbgl/util/uv.hpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/mbgl/util/uv.hpp b/include/mbgl/util/uv.hpp index f36da83e4..a11d9b19c 100644 --- a/include/mbgl/util/uv.hpp +++ b/include/mbgl/util/uv.hpp @@ -21,13 +21,18 @@ namespace uv { class loop { public: - inline loop() : l(uv_loop_new()) {} - inline ~loop() { uv_loop_delete(l); } + inline loop() { + if (uv_loop_init(&l) != 0) { + throw std::runtime_error("failed to initialize loop"); + } + } - inline uv_loop_t *operator*() { return l; } + inline ~loop() { uv_loop_close(&l); } + + inline uv_loop_t *operator*() { return &l; } private: - uv_loop_t *l; + uv_loop_t l; }; class mutex {