summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2020-10-16 16:42:32 +0300
committerOleg Oshmyan <chortos@inbox.lv>2020-10-27 01:24:13 +0200
commit34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192 (patch)
tree052abb4a756e0d9d051e5512eac6643f1d928008
parentcf73dd7cf0c58dfce800906ae74489d307860cdb (diff)
downloadlibass-34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192.tar.bz2
libass-34cbd0f865bf4db3dbe335a3ae90b6aafd1c3192.tar.xz
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.
-rw-r--r--libass/ass_parse.c6
1 files 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)