From b28782c4a3cd52587d61541bcca4e0b217685c54 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Sun, 17 May 2015 18:00:42 +0200 Subject: Fix incorrect iterator use leading to prematurely exiting loops when quitting users while looping the local user list --- src/modules/m_close.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/modules/m_close.cpp') diff --git a/src/modules/m_close.cpp b/src/modules/m_close.cpp index f3c751f17..3f0eedaaf 100644 --- a/src/modules/m_close.cpp +++ b/src/modules/m_close.cpp @@ -36,9 +36,11 @@ class CommandClose : public Command std::map closed; const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); - for (UserManager::LocalList::const_iterator u = list.begin(); u != list.end(); ++u) + for (UserManager::LocalList::const_iterator u = list.begin(); u != list.end(); ) { + // Quitting the user removes it from the list LocalUser* user = *u; + ++u; if (user->registered != REG_ALL) { ServerInstance->Users->QuitUser(user, "Closing all unknown connections per request"); -- cgit v1.3.1-10-gc9f91