From 34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192 Mon Sep 17 00:00:00 2001 From: Oleg Oshmyan Date: Fri, 16 Oct 2020 16:42:32 +0300 Subject: process_karaoke_effects: use long long for timestamps Our frame timestamps are long long. Don't truncate them to int here. This also avoids overflow in (tm_end - tm_start) if \k... tag arguments are big, although, of course, parse_tags still reads them in as doubles to begin with and their conversion from double may still be undefined. --- libass/ass_parse.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libass/ass_parse.c b/libass/ass_parse.c index e500046..11d7f1b 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -972,7 +972,7 @@ void apply_transition_effects(ASS_Renderer *render_priv, ASS_Event *event) */ void process_karaoke_effects(ASS_Renderer *render_priv) { - int tm_current = render_priv->time - render_priv->state.event->Start; + long long tm_current = render_priv->time - render_priv->state.event->Start; int timing = 0; Effect effect_type = EF_NONE; @@ -993,8 +993,8 @@ void process_karaoke_effects(ASS_Renderer *render_priv) if (effect_type == EF_NONE) continue; - int tm_start = timing + start->effect_skip_timing; - int tm_end = tm_start + start->effect_timing; + long long tm_start = timing + start->effect_skip_timing; + long long tm_end = tm_start + start->effect_timing; timing = tm_end; if (effect_type != EF_KARAOKE_KF) -- cgit v1.2.3