> Below is a trivial patch that fixes the warning on MinGW. The patch successfully builds and tests with MinGW and Windows SDK on Win7 32bit. When building on Arch Linux, the patched build gives the same `make test && make test-all` results (6 errors, 45 skips) as an unpatched build. In all other uses in `thread.c` (except for `rb_fd_rcopy`) the `rb_fd_max` macro generatessize_t` object. From what I can tell, use cases are all unsigned int's.
>
> diff --git a/thread.c b/thread.c
> index d9fe5506..0b48061 100644
> --- a/thread.c
> +++ b/thread.c
> @@ -2463,7 +2463,7 @@ rb_fd_init_copy(rb_fdset_t *dst, rb_fdset_t *src)
>  
>   >  
> -   > +  >
> /* we assume src is the result of select() with dst, so dst should be
>  larger or equal than src. */

I think rb_fd_max() should return int. Is there any possibility that
fdset->fd_count overflow signed int?

Moreover Windows fd_set::fd_count has u_int type if a documentation is
correct (I saw http://msdn.microsoft.com/en-us/library/windows/desktop/ms737873(v=vs.85).aspx)
and  size_t is not an alias of u_int.