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:
parent
d18d03d6f3
commit
a1d9aa6e07
|
@ -210,6 +210,14 @@ xcb_connection_t *xcb_connect_to_fd(int fd, xcb_auth_info_t *auth_info)
|
||||||
{
|
{
|
||||||
xcb_connection_t* c;
|
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));
|
c = calloc(1, sizeof(xcb_connection_t));
|
||||||
if(!c) {
|
if(!c) {
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
Loading…
Reference in New Issue