Fix time calculations
eloop.c and log.c use struct timeval to calculate time-diffs but incorrectly use "-" instead of "+" as the value is already negative. They also use unsigned integers so fix both occurences. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
5a865fc39b
commit
83dc28fcc7
@ -816,7 +816,7 @@ int ev_eloop_run(struct ev_eloop *loop, int timeout)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct timeval tv, start;
|
struct timeval tv, start;
|
||||||
uint64_t off, msec;
|
int64_t off, msec;
|
||||||
|
|
||||||
if (!loop)
|
if (!loop)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -835,10 +835,10 @@ int ev_eloop_run(struct ev_eloop *loop, int timeout)
|
|||||||
} else if (timeout > 0) {
|
} else if (timeout > 0) {
|
||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
off = tv.tv_sec - start.tv_sec;
|
off = tv.tv_sec - start.tv_sec;
|
||||||
msec = tv.tv_usec - start.tv_usec;
|
msec = (int64_t)tv.tv_usec - (int64_t)start.tv_usec;
|
||||||
if (msec < 0) {
|
if (msec < 0) {
|
||||||
off -= 1;
|
off -= 1;
|
||||||
msec = 1000000 - msec;
|
msec = 1000000 + msec;
|
||||||
}
|
}
|
||||||
off *= 1000;
|
off *= 1000;
|
||||||
off += msec / 1000;
|
off += msec / 1000;
|
||||||
|
@ -59,10 +59,10 @@ static void log__time(long long *sec, long long *usec)
|
|||||||
} else {
|
} else {
|
||||||
gettimeofday(&t, NULL);
|
gettimeofday(&t, NULL);
|
||||||
*sec = t.tv_sec - log__ftime.tv_sec;
|
*sec = t.tv_sec - log__ftime.tv_sec;
|
||||||
*usec = t.tv_usec - log__ftime.tv_usec;
|
*usec = (long long)t.tv_usec - (long long)log__ftime.tv_usec;
|
||||||
if (*usec < 0) {
|
if (*usec < 0) {
|
||||||
*sec -= 1;
|
*sec -= 1;
|
||||||
*usec = 1000000 - *usec;
|
*usec = 1000000 + *usec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user