summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libass/ass.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 5ec8a95..19cc460 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -822,7 +822,13 @@ static int process_events_line(ASS_Track *track, char *str)
return -1;
event = track->events + eid;
- return process_event_tail(track, event, str, 0);
+ int ret = process_event_tail(track, event, str, 0);
+ if (!ret)
+ return 0;
+ // If something went wrong, discard the useless Event
+ ass_free_event(track, eid);
+ track->n_events--;
+ return ret;
} else {
ass_msg(track->library, MSGL_V, "Not understood: '%.30s'", str);
}
@@ -1125,7 +1131,8 @@ void ass_process_chunk(ASS_Track *track, char *data, int size,
NEXT(p, token);
event->Layer = atoi(token);
- process_event_tail(track, event, p, 3);
+ if (process_event_tail(track, event, p, 3))
+ break;
event->Start = timecode;
event->Duration = duration;