Commit 97d7a926 authored by Yang Tse's avatar Yang Tse
Browse files

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.
parent 4a4d0444
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -120,8 +120,11 @@ long curlx_tvdiff(struct timeval newer, struct timeval older)
 */
double curlx_tvdiff_secs(struct timeval newer, struct timeval older)
{
  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 */
+5 −2
Original line number Diff line number Diff line
@@ -123,8 +123,11 @@ long tool_tvdiff(struct timeval newer, struct timeval older)
 */
double tool_tvdiff_secs(struct timeval newer, struct timeval older)
{
  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 */
+5 −2
Original line number Diff line number Diff line
@@ -123,8 +123,11 @@ long tutil_tvdiff(struct timeval newer, struct timeval older)
 */
double tutil_tvdiff_secs(struct timeval newer, struct timeval older)
{
  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 */