Hi Herbert,

> On 4 Nov 2014, at 0:34, Herbert Valerio Riedel <[email protected]> wrote:
> 
> Was the passed `timeval` structure valid? I.e. is the tv_usec value inside
> the [0,1e6-1] range? and was tv_sec>=0 ?

The simple test I wrote is:

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <limits.h>
#include <sys/select.h>
#include <sys/time.h>

int main(int argc, char **argv)
{
    fd_set set;
    FD_ZERO(&set);

    struct timeval tv;
    tv.tv_sec = INT_MAX;
    tv.tv_usec = 0;

    FD_SET(0, &set);

    int ret = select(1, &set, &set, &set, &tv);
    printf("Result %d: %s\n", ret, strerror(errno));
    printf("time_t: %lu suseconds_t: %lu\n", sizeof(time_t), 
sizeof(suseconds_t));
    return 0;
}

This exits with EINVAL for me on OSX, if I replace INT_MAX with 1000, it runs 
just fine. The man page on OSX mentions EINVAL for values that exceed the 
maximum timeout, so it looks like OSX is not following the spec, then...

Cheers,
Merijn
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to