Fix integer overflow when computing the progress percentage

This commit is contained in:
Andrea Mazzoleni 2024-01-03 20:02:42 +01:00
parent a3270063dd
commit 85ca997bf2
4 changed files with 40 additions and 24 deletions

View file

@ -672,3 +672,22 @@ int lock_unlock(int f)
}
#endif
/****************************************************************************/
/* muldiv */
unsigned muldiv(uint64_t v, uint64_t mul, uint64_t div)
{
if (!div)
return 0;
return (uint32_t)(v * mul / div);
}
unsigned muldiv_upper(uint64_t v, uint64_t mul, uint64_t div)
{
if (!div)
return 0;
return (uint32_t)((v * mul + div - 1) / div);
}