From: Daniel Stenberg Date: Sat, 8 May 2021 11:10:06 +0000 (+0200) Subject: trspeed: use long double for transfer speed calculation X-Git-Tag: curl-7_77_0~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8a75224a6986a5742215e0e73e1ac0d3419eff43;p=thirdparty%2Fcurl.git trspeed: use long double for transfer speed calculation --- diff --git a/lib/progress.c b/lib/progress.c index 31808aa8c6..dffaa074e4 100644 --- a/lib/progress.c +++ b/lib/progress.c @@ -369,26 +369,13 @@ void Curl_pgrsSetUploadSize(struct Curl_easy *data, curl_off_t size) } } -/* returns the average speed */ -static curl_off_t trspeed(curl_off_t size, curl_off_t us) +/* returns the average speed in bytes / second */ +static curl_off_t trspeed(curl_off_t size, /* number of bytes */ + curl_off_t us) /* microseconds */ { - curl_off_t sec; - if(size < CURL_OFF_T_MAX/1000000) { - if(us < 1) - return size * 1000000; - return (size * 1000000) / us; - } - else if(size < CURL_OFF_T_MAX/1000) { - curl_off_t ms = us/1000; - if(ms < 1) - return size * 1000; - return (size * 1000) / ms; - } - sec = us / 1000000; - if(sec < 1) - return size; - - return size / sec; + if(us < 1) + return size * 1000000; + return (curl_off_t)((long double)size/us * 1000000); } /* returns TRUE if it's time to show the progress meter */