diff options
author | Bert Belder <bertbelder@gmail.com> | 2018-10-19 00:20:23 +0200 |
---|---|---|
committer | Bert Belder <bertbelder@gmail.com> | 2018-10-19 02:35:49 +0200 |
commit | 142e532910a534080de297de5be88a502163fc4e (patch) | |
tree | b7e3585bcad6e73056ae31b3aa3c24928b83756c | |
parent | d0b859ec377a757d8bf726752c00be7ede73478e (diff) |
libdeno: store v8::Persistent in map by value instead of by reference
-rw-r--r-- | libdeno/binding.cc | 11 | ||||
-rw-r--r-- | libdeno/internal.h | 2 |
2 files changed, 4 insertions, 9 deletions
diff --git a/libdeno/binding.cc b/libdeno/binding.cc index c1fd0df73..3a3f171e6 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<v8::Value> data_v) { - // TODO Use std::unique_ptr - auto pair = - std::make_pair(req_id, new v8::Persistent<v8::Value>(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 2093725b9..b902c556b 100644 --- a/libdeno/internal.h +++ b/libdeno/internal.h @@ -23,7 +23,7 @@ struct deno_s { int32_t pending_promise_events; v8::Persistent<v8::Context> context; - std::map<int32_t, v8::Persistent<v8::Value>*> async_data_map; + std::map<int32_t, v8::Persistent<v8::Value>> async_data_map; deno_recv_cb cb; int32_t next_req_id; void* user_data; |