[vlc-devel] [PATCH] darwin:thread: fix invalid nanosecond ticks conversion
Steve Lhomme
robux4 at ycbcr.xyz
Thu Sep 27 08:23:16 CEST 2018
vlc_clock_conversion_factor.numer is assumed to be small so that date *
vlc_clock_conversion_factor.numer doesn't overflow in normal use.
---
src/darwin/thread.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/darwin/thread.c b/src/darwin/thread.c
index f5eb4f234e7..1c2f121408b 100644
--- a/src/darwin/thread.c
+++ b/src/darwin/thread.c
@@ -516,14 +516,8 @@ vlc_tick_t vlc_tick_now (void)
vlc_clock_setup();
uint64_t date = mach_absolute_time();
- /* denom is uint32_t, switch to 64 bits to prevent overflow. */
- uint64_t denom = vlc_clock_conversion_factor.denom;
-
- /* Switch to microsecs */
- denom *= UINT64_C(1000);
-
- /* Split the division to prevent overflow */
- return vlc_tick_from_frac( date * vlc_clock_conversion_factor.numer, denom );
+ return VLC_TICK_FROM_US( (date * vlc_clock_conversion_factor.numer) /
+ vlc_clock_conversion_factor.denom );
}
#undef vlc_tick_wait
--
2.19.0
More information about the vlc-devel
mailing list