mirror of
https://github.com/curl/curl.git
synced 2025-01-30 14:22:33 +08:00
tvdiff_secs(): sub-zero time difference adjustment
Skip a floating point addition operation when integral part of time difference is zero. This avoids potential floating point addition rounding problems while preserving decimal part value.
This commit is contained in:
parent
4a4d04446d
commit
97d7a9260e
@ -120,8 +120,11 @@ long curlx_tvdiff(struct timeval newer, struct timeval older)
|
|||||||
*/
|
*/
|
||||||
double curlx_tvdiff_secs(struct timeval newer, struct timeval older)
|
double curlx_tvdiff_secs(struct timeval newer, struct timeval older)
|
||||||
{
|
{
|
||||||
return (double)(newer.tv_sec-older.tv_sec)+
|
if(newer.tv_sec != older.tv_sec)
|
||||||
(double)(newer.tv_usec-older.tv_usec)/1000000.0;
|
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 */
|
/* return the number of seconds in the given input timeval struct */
|
||||||
|
@ -123,8 +123,11 @@ long tool_tvdiff(struct timeval newer, struct timeval older)
|
|||||||
*/
|
*/
|
||||||
double tool_tvdiff_secs(struct timeval newer, struct timeval older)
|
double tool_tvdiff_secs(struct timeval newer, struct timeval older)
|
||||||
{
|
{
|
||||||
return (double)(newer.tv_sec-older.tv_sec)+
|
if(newer.tv_sec != older.tv_sec)
|
||||||
(double)(newer.tv_usec-older.tv_usec)/1000000.0;
|
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 */
|
/* return the number of seconds in the given input timeval struct */
|
||||||
|
@ -123,8 +123,11 @@ long tutil_tvdiff(struct timeval newer, struct timeval older)
|
|||||||
*/
|
*/
|
||||||
double tutil_tvdiff_secs(struct timeval newer, struct timeval older)
|
double tutil_tvdiff_secs(struct timeval newer, struct timeval older)
|
||||||
{
|
{
|
||||||
return (double)(newer.tv_sec-older.tv_sec)+
|
if(newer.tv_sec != older.tv_sec)
|
||||||
(double)(newer.tv_usec-older.tv_usec)/1000000.0;
|
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 */
|
/* return the number of seconds in the given input timeval struct */
|
||||||
|
Loading…
Reference in New Issue
Block a user