diff --git a/libdeno/binding.cc b/libdeno/binding.cc index c1fd0df73bfba4c7b42cb946c539a14fa295fcff..3a3f171e639f7c2697e116ece8893c478b69618e 100644 --- a/libdeno/binding.cc +++ b/libdeno/binding.cc @@ -21,20 +21,15 @@ Deno* FromIsolate(v8::Isolate* isolate) { } void AddDataRef(Deno* d, int32_t req_id, v8::Local data_v) { - // TODO Use std::unique_ptr - auto pair = - std::make_pair(req_id, new v8::Persistent(d->isolate, data_v)); - d->async_data_map.insert(pair); + d->async_data_map.emplace(std::piecewise_construct, std::make_tuple(req_id), + std::make_tuple(d->isolate, data_v)); } void DeleteDataRef(Deno* d, int32_t req_id) { // Delete persistent reference to data ArrayBuffer. auto it = d->async_data_map.find(req_id); if (it != d->async_data_map.end()) { - auto pair = *it; - auto p = pair.second; - p->Reset(); - delete p; + it->second.Reset(); d->async_data_map.erase(it); } } diff --git a/libdeno/internal.h b/libdeno/internal.h index 2093725b94659cf79ed1627acd32587593c19ea2..b902c556bc9935ad450d726fc925b70b6bc03ef8 100644 --- a/libdeno/internal.h +++ b/libdeno/internal.h @@ -23,7 +23,7 @@ struct deno_s { int32_t pending_promise_events; v8::Persistent context; - std::map*> async_data_map; + std::map> async_data_map; deno_recv_cb cb; int32_t next_req_id; void* user_data;