diff --git a/lib/timeval.c b/lib/timeval.c index cb39308e0..2fd720144 100644 --- a/lib/timeval.c +++ b/lib/timeval.c @@ -120,8 +120,11 @@ long curlx_tvdiff(struct timeval newer, struct timeval older) */ double curlx_tvdiff_secs(struct timeval newer, struct timeval older) { - return (double)(newer.tv_sec-older.tv_sec)+ - (double)(newer.tv_usec-older.tv_usec)/1000000.0; + if(newer.tv_sec != older.tv_sec) + return (double)(newer.tv_sec-older.tv_sec)+ + (double)(newer.tv_usec-older.tv_usec)/1000000.0; + else + return (double)(newer.tv_usec-older.tv_usec)/1000000.0; } /* return the number of seconds in the given input timeval struct */ diff --git a/src/tool_util.c b/src/tool_util.c index 79c998295..93ab17fd4 100644 --- a/src/tool_util.c +++ b/src/tool_util.c @@ -123,8 +123,11 @@ long tool_tvdiff(struct timeval newer, struct timeval older) */ double tool_tvdiff_secs(struct timeval newer, struct timeval older) { - return (double)(newer.tv_sec-older.tv_sec)+ - (double)(newer.tv_usec-older.tv_usec)/1000000.0; + if(newer.tv_sec != older.tv_sec) + return (double)(newer.tv_sec-older.tv_sec)+ + (double)(newer.tv_usec-older.tv_usec)/1000000.0; + else + return (double)(newer.tv_usec-older.tv_usec)/1000000.0; } /* return the number of seconds in the given input timeval struct */ diff --git a/tests/libtest/testutil.c b/tests/libtest/testutil.c index 63393c589..4ee488e71 100644 --- a/tests/libtest/testutil.c +++ b/tests/libtest/testutil.c @@ -123,8 +123,11 @@ long tutil_tvdiff(struct timeval newer, struct timeval older) */ double tutil_tvdiff_secs(struct timeval newer, struct timeval older) { - return (double)(newer.tv_sec-older.tv_sec)+ - (double)(newer.tv_usec-older.tv_usec)/1000000.0; + if(newer.tv_sec != older.tv_sec) + return (double)(newer.tv_sec-older.tv_sec)+ + (double)(newer.tv_usec-older.tv_usec)/1000000.0; + else + return (double)(newer.tv_usec-older.tv_usec)/1000000.0; } /* return the number of seconds in the given input timeval struct */