--- time.c.orig 2008-07-30 13:29:30.000000000 -0700 +++ time.c 2008-07-30 13:36:03.000000000 -0700 @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/tim #include <sys/types.h> #include <sys/time.h> +#include <fenv.h> time_t time(t) @@ -46,12 +47,21 @@ time(t) { struct timeval tt; time_t retval; +#ifdef FE_DFL_ENV + fenv_t fenv; +#endif /* FE_DFL_ENV */ +#ifdef FE_DFL_ENV + fegetenv(&fenv); /* 3965505 - need to preserve floating point enviroment */ +#endif /* FE_DFL_ENV */ if (gettimeofday(&tt, (struct timezone *)0) < 0) retval = -1; else retval = tt.tv_sec; if (t != NULL) *t = retval; +#ifdef FE_DFL_ENV + fesetenv(&fenv); +#endif /* FE_DFL_ENV */ return (retval); }