#include <glib.h>
#include <sys/time.h>
#include <stdlib.h>
+#include <string.h>
#include "misc-private.h"
void _wapi_calc_timeout(struct timespec *timeout, guint32 ms)
{
struct timeval now;
- div_t divvy;
-
- divvy=div((int)ms, 1000);
- gettimeofday(&now, NULL);
+ div_t ms_divvy, overflow_divvy;
+
+ gettimeofday (&now, NULL);
+
+ ms_divvy = div (ms, 1000);
+ overflow_divvy = div ((now.tv_usec / 1000) + ms_divvy.rem, 1000);
- timeout->tv_sec=now.tv_sec+divvy.quot;
- timeout->tv_nsec=(now.tv_usec+(divvy.rem*1000))*1000;
+ timeout->tv_sec = now.tv_sec + ms_divvy.quot + overflow_divvy.quot;
+ timeout->tv_nsec = overflow_divvy.rem * 1000000;
}