Commit fee29001 authored by Max Kellermann's avatar Max Kellermann

event/WinSelect: use unordered_map::emplace() in Add()

This allow using erase() with iterator, without a key lookup.
parent 6d894a18
...@@ -64,7 +64,8 @@ bool ...@@ -64,7 +64,8 @@ bool
WinSelectBackend::Add(SOCKET fd, unsigned events, void *obj) noexcept WinSelectBackend::Add(SOCKET fd, unsigned events, void *obj) noexcept
{ {
assert(items.find(fd) == items.end()); assert(items.find(fd) == items.end());
auto &item = items[fd]; auto i = items.emplace(fd, Item{}).first;
auto &item = i->second;
item.index[EVENT_READ] = -1; item.index[EVENT_READ] = -1;
item.index[EVENT_WRITE] = -1; item.index[EVENT_WRITE] = -1;
...@@ -72,11 +73,11 @@ WinSelectBackend::Add(SOCKET fd, unsigned events, void *obj) noexcept ...@@ -72,11 +73,11 @@ WinSelectBackend::Add(SOCKET fd, unsigned events, void *obj) noexcept
item.events = 0; item.events = 0;
if (!CanModify(item, events, EVENT_READ)) { if (!CanModify(item, events, EVENT_READ)) {
items.erase(fd); items.erase(i);
return false; return false;
} }
if (!CanModify(item, events, EVENT_WRITE)) { if (!CanModify(item, events, EVENT_WRITE)) {
items.erase(fd); items.erase(i);
return false; return false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment