- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
CSocket* CServer::GetSocket (const int& fd) { // Find socket by FD
if (m_mapSocket[fd]) return m_mapSocket[fd];
else return NULL;
}
// another one piece of crap...
void CServer::CloseSocket(const int& fd) { // Close Socket.
delete m_mapSocket[fd];
if (m_mapSocket[fd]) m_mapSocket.erase(fd);
FD_CLR(fd,&FFd_set);
if (fd == FMax_fd) FMax_fd--;
}
куча поисков,
вторая строчка CServer::GetSocket() - вообще ни о чем, ибо никогда не выполнится,
первая CServer::CloseSocket() - явно просится access violation,
вторая CServer::CloseSocket() тоже ни о чем, ибо выполнится всегда.
хотя, вероятно у автора и с массивами тоже беда, т.к. они были бы очевидной оптимизацией.
а еще, имхо, передавать int ссылкой - форменное извращение.
тогда вторая строчка CServer::GetSocket() все равно ни о чем, ибо просто избыточна,
access violation в CServer::CloseSocket() тоже не будет, а будет просто memleak при нулевом указателе :)
Хотя может это был способ генерировать исключения в случае отсутствия элемента в массиве...