Fail if fd is too big and poll() is not available

Depending on the process file limit, a file descriptor can be larger
than the capacity of fd_set. There is no portable way to create a
large enough fd_set at run-time. So we just fail if the file descriptor
number is too high and poll() is not available.

Reviewed-by: Jamey Sharp <jamey@minilop.net>
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Rémi Denis-Courmont 2010-03-26 23:12:47 +02:00 committed by Julien Danjou
parent d18d03d6f3
commit a1d9aa6e07

View File

@ -210,6 +210,14 @@ xcb_connection_t *xcb_connect_to_fd(int fd, xcb_auth_info_t *auth_info)
{
xcb_connection_t* c;
#ifndef USE_POLL
if(fd >= FD_SETSIZE) /* would overflow in FD_SET */
{
close(fd);
return (xcb_connection_t *) &error_connection;
}
#endif
c = calloc(1, sizeof(xcb_connection_t));
if(!c) {
close(fd);