When a double is cast to an int, but the double has a larger value
than the int supports, it's set to 0x80000000 to indicate overflow. msclock() is *always* overflowing, and clock_t is only 32-bits on some platforms (specifically FreeBSD). To "avoid" problems, just keep subtracting UIN32_MAX from the value until it's less than INT_MAX then cast. This function is, of course, terrible and shouldn't actually be used, but it should at least sorta kinda workish.
-
Owner
From the Linux man page on roundl(): If you want to store the rounded value in an integer type, you probably want to use one of the functions described in lround(3) instead.
-
Author Maintainer
Can't because it's too big to fit... we don't want to deal with FP exceptions.
-
Owner
Interesting. So were you seeing msclock() always returning the same number before?
-
Author Maintainer
Yep.
-
Owner
And this is because we're now greater than some magic number of milliseconds away from the Epoch?
Please register or sign in to comment