From 8c2cdeaf33bf6fa2d51df0e6e2c0cbdfc3e1230b Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Sat, 27 Sep 2014 18:30:01 +0200 Subject: Store Membership objects physically in the nodes of Channel::MemberMap --- src/channels.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/channels.cpp') diff --git a/src/channels.cpp b/src/channels.cpp index 13595c4c3..2ea8688cf 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -61,11 +61,11 @@ void Channel::SetTopic(User* u, const std::string& ntopic) Membership* Channel::AddUser(User* user) { - Membership*& memb = userlist[user]; - if (memb) + std::pair ret = userlist.insert(std::make_pair(user, insp::aligned_storage())); + if (!ret.second) return NULL; - memb = new Membership(user, this); + Membership* memb = new(ret.first->second) Membership(user, this); return memb; } @@ -102,7 +102,7 @@ void Channel::DelUser(const MemberMap::iterator& membiter) { Membership* memb = membiter->second; memb->cull(); - delete memb; + memb->~Membership(); userlist.erase(membiter); // If this channel became empty then it should be removed -- cgit v1.3.1-10-gc9f91