diff --git a/changelog.md b/changelog.md index 8c63cbc..6e1dd81 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,7 @@ HEAD - Improvement: Better automatic std::chrono feature detection for Visual Studio +- Bug: Fix memory leak when init_asio produces an error. #454 Thank you Mark Grimes for + reporting and fixing. 0.6.0 - MINOR BREAKING TRANSPORT POLICY CHANGE: Custom transport policies will now be diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index ba38d96..6b348f9 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -219,9 +219,9 @@ public: */ void init_asio(lib::error_code & ec) { // Use a smart pointer until the call is successful and ownership has successfully been taken - lib::auto_ptr pService(new lib::asio::io_service()); - init_asio(pService.get(), ec); - if( !ec ) pService.release(); // Call was successful, transfer ownership + lib::auto_ptr service(new lib::asio::io_service()); + init_asio(service.get(), ec); + if( !ec ) service.release(); // Call was successful, transfer ownership m_external_io_service = false; } @@ -234,10 +234,10 @@ public: */ void init_asio() { // Use a smart pointer until the call is successful and ownership transferred - lib::auto_ptr pService(new lib::asio::io_service()); - init_asio( pService.get() ); + lib::auto_ptr service(new lib::asio::io_service()); + init_asio( service.get() ); // If control got this far without an exception, then ownership has successfully been taken - pService.release(); + service.release(); m_external_io_service = false; }