Кресты / Говнокод #1708 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 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 zaufi, (Updated )

Комментарии (7) RSS

  • забыл упомянуть что m_mapSocket это std::map<int, CSocket*>
    Ответить
      • я бы не сказал, что тут все хорошо с мапами.
        куча поисков,
        вторая строчка CServer::GetSocket() - вообще ни о чем, ибо никогда не выполнится,
        первая CServer::CloseSocket() - явно просится access violation,
        вторая CServer::CloseSocket() тоже ни о чем, ибо выполнится всегда.

        хотя, вероятно у автора и с массивами тоже беда, т.к. они были бы очевидной оптимизацией.
        а еще, имхо, передавать int ссылкой - форменное извращение.
        Ответить
        • хотя.. мапа же наверное имеет защиту от дурака и все же инициализирует указатель...
          тогда вторая строчка CServer::GetSocket() все равно ни о чем, ибо просто избыточна,
          access violation в CServer::CloseSocket() тоже не будет, а будет просто memleak при нулевом указателе 🙂
          Ответить
        • >хотя, вероятно у автора и с массивами тоже беда, т.к. они были бы очевидной оптимизацией.
          Хотя может это был способ генерировать исключения в случае отсутствия элемента в массиве...
          Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8