diff options
author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-10-16 17:38:21 +0000 |
---|---|---|
committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-10-16 17:38:21 +0000 |
commit | 3806cd84408317d358c22cbfd5aa8bac3e09c72e (patch) | |
tree | 3a54943bb89192724a3245916ae6136d4596e034 | |
parent | f6510291aa1131dbc4b4fe2f573b4c317eb3db90 (diff) |
Fixed bug #1110 - Fixed tracking of NickServ collide/release timers to only attempt to delete real ones
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2563 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r-- | src/nickserv.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/nickserv.c b/src/nickserv.c index 110c52e29..22938b954 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -41,16 +41,19 @@ class NickServCollide : public Timer { public: NickAlias *na; - std::map<NickAlias *, NickServCollide *>::iterator nit; + std::pair<std::map<NickAlias *, NickServCollide *>::iterator, bool> it; NickServCollide(NickAlias *nickalias, time_t delay) : Timer(delay), na(nickalias) { - nit = NickServCollides.insert(std::make_pair(nickalias, this)).first; + it = NickServCollides.insert(std::make_pair(nickalias, this)); } ~NickServCollide() { - NickServCollides.erase(nit); + if (it.second) + { + NickServCollides.erase(it.first); + } } void Tick(time_t ctime) @@ -85,16 +88,19 @@ class NickServRelease : public Timer public: NickAlias *na; std::string uid; - std::map<NickAlias *, NickServRelease *>::iterator nit; + std::pair<std::map<NickAlias *, NickServRelease *>::iterator, bool> it; NickServRelease(NickAlias *nickalias, time_t delay) : Timer(delay), na(nickalias) { - nit = NickServReleases.insert(std::make_pair(nickalias, this)).first; + it = NickServReleases.insert(std::make_pair(nickalias, this)); } ~NickServRelease() { - NickServReleases.erase(nit); + if (it.second) + { + NickServReleases.erase(it.first); + } } void Tick(time_t ctime) |