LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Проверка в коде программы. У меня например это так выглядит:

 FD_ZERO(&fds);
#ifdef WIN32
 if(sock<0) { WSASetLastError(WSAEBADF); return -1; }
 FD_SET((unsigned int)sock, &fds);
#else
 if(sock<0 || sock>=(int)FD_SETSIZE) { errno=EBADF; return -1; }
 FD_SET(sock, &fds);
#endif

Погоди. А где переносимость-то? Уже лапша из ifdef на ровном месте.

Кстати, ни разу таких проверок нигде не видел. Да и понятно почему. Мало кто настолько упорот, чтобы из-за валидного fd вешать нахрен всю программу, потому что ему именно что всралось использовать ущербный API, который старше большинства живущих сегодня программистов.

Исходная версия hateyoufeel, :

Проверка в коде программы. У меня например это так выглядит:

 FD_ZERO(&fds);
#ifdef WIN32
 if(sock<0) { WSASetLastError(WSAEBADF); return -1; }
 FD_SET((unsigned int)sock, &fds);
#else
 if(sock<0 || sock>=(int)FD_SETSIZE) { errno=EBADF; return -1; }
 FD_SET(sock, &fds);
#endif

Погоди. А где переносимость-то? Уже лапша из ifdef на ровном месте.

Кстати, ни разу таких проверок нигде не видел.