From 4b52e1bf234c99c738e713f189282c95e63841d7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 29 Dec 2020 19:27:34 -0700 Subject: [PATCH] temporal: slightly reduce overflow risk (see comment) --- libs/temporal/tempo.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libs/temporal/tempo.cc b/libs/temporal/tempo.cc index e3bb175843..8f83924ae6 100644 --- a/libs/temporal/tempo.cc +++ b/libs/temporal/tempo.cc @@ -502,8 +502,9 @@ TempoPoint::quarters_at_superclock (superclock_t sc) const const superclock_t whole_seconds = sc / superclock_ticks_per_second; const superclock_t remainder = sc - (whole_seconds * superclock_ticks_per_second); - const superclock_t supernotes = ((_super_note_type_per_second) * whole_seconds) + int_div_round (superclock_t ((_super_note_type_per_second) * remainder), superclock_ticks_per_second); - const superclock_t superbeats = int_div_round (supernotes * 4, (superclock_t) _note_type); + const int64_t supernotes = ((_super_note_type_per_second) * whole_seconds) + int_div_round (superclock_t ((_super_note_type_per_second) * remainder), superclock_ticks_per_second); + /* multiply after divide to reduce overflow risk */ + const int64_t superbeats = int_div_round (supernotes, (superclock_t) _note_type) * 4; /* convert superbeats to beats:ticks */ int32_t b;