From d407291dcc031e899fc1c52265b33707a1258b59 Mon Sep 17 00:00:00 2001 From: Gireesh Punathil Date: Thu, 27 Sep 2018 10:18:58 -0400 Subject: src: unique_ptrs in few lambdas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Few lambdas in src/node_file.cc uses conventional pointers, turn those into unique_ptr semantics PR-URL: https://github.com/nodejs/node/pull/23124 Reviewed-By: Tobias Nießen Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- src/node_file.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/node_file.cc') diff --git a/src/node_file.cc b/src/node_file.cc index 20cb4771bd..6a71ef1124 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -163,7 +163,7 @@ inline void FileHandle::Close() { // Do not unref this env()->SetImmediate([](Environment* env, void* data) { char msg[70]; - err_detail* detail = static_cast(data); + std::unique_ptr detail(static_cast(data)); snprintf(msg, arraysize(msg), "Closing file descriptor %d on garbage collection failed", detail->fd); @@ -173,7 +173,6 @@ inline void FileHandle::Close() { // down the process is the only reasonable thing we can do here. HandleScope handle_scope(env->isolate()); env->ThrowUVException(detail->ret, "close", msg); - delete detail; }, detail); return; } @@ -182,11 +181,10 @@ inline void FileHandle::Close() { // to notify that the file descriptor was gc'd. We want to be noisy about // this because not explicitly closing the FileHandle is a bug. env()->SetUnrefImmediate([](Environment* env, void* data) { - err_detail* detail = static_cast(data); + std::unique_ptr detail(static_cast(data)); ProcessEmitWarning(env, "Closing file descriptor %d on garbage collection", detail->fd); - delete detail; }, detail); } @@ -234,7 +232,7 @@ inline MaybeLocal FileHandle::ClosePromise() { closing_ = true; CloseReq* req = new CloseReq(env(), promise, object()); auto AfterClose = uv_fs_callback_t{[](uv_fs_t* req) { - CloseReq* close = CloseReq::from_req(req); + std::unique_ptr close(CloseReq::from_req(req)); CHECK_NOT_NULL(close); close->file_handle()->AfterClose(); Isolate* isolate = close->env()->isolate(); @@ -243,7 +241,6 @@ inline MaybeLocal FileHandle::ClosePromise() { } else { close->Resolve(); } - delete close; }}; int ret = req->Dispatch(uv_fs_close, fd_, AfterClose); if (ret < 0) { -- cgit v1.2.3