- 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--;
}
zaufi 28.08.2009 04:54 # 0
guest 28.08.2009 09:16 # 0
guest 28.08.2009 16:35 # 0
Говногость 31.08.2009 16:02 # 0
guest 01.09.2009 09:17 # 0
куча поисков,
вторая строчка CServer::GetSocket() - вообще ни о чем, ибо никогда не выполнится,
первая CServer::CloseSocket() - явно просится access violation,
вторая CServer::CloseSocket() тоже ни о чем, ибо выполнится всегда.
хотя, вероятно у автора и с массивами тоже беда, т.к. они были бы очевидной оптимизацией.
а еще, имхо, передавать int ссылкой - форменное извращение.
guest 01.09.2009 09:37 # 0
тогда вторая строчка CServer::GetSocket() все равно ни о чем, ибо просто избыточна,
access violation в CServer::CloseSocket() тоже не будет, а будет просто memleak при нулевом указателе :)
Говногость 02.09.2009 15:29 # 0
Хотя может это был способ генерировать исключения в случае отсутствия элемента в массиве...