summaryrefslogtreecommitdiffstats
path: root/libass/ass.c
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2014-02-12 17:00:14 +0000
committerOneric <oneric@oneric.stub>2022-09-29 20:00:35 +0200
commit486fb4a871b50bd2a7e416266ed3e24cae2d3d2b (patch)
treedbf4d2345d4147f67284c0b0c81a61964dbca4e2 /libass/ass.c
parent5f57443f1784434fe8961275da08be6d6febc688 (diff)
downloadlibass-486fb4a871b50bd2a7e416266ed3e24cae2d3d2b.tar.bz2
libass-486fb4a871b50bd2a7e416266ed3e24cae2d3d2b.tar.xz
Trim trailing whitespace from Dialogue lines early
Trailing "\N " no longer produces an empty line. This matches VSFilter. Use a pointer to one past the last character rather than to the last character itself to avoid decrementing the pointer when it points to the first character, which has undefined behavior. Resolves: https://github.com/libass/libass/pull/47
Diffstat (limited to 'libass/ass.c')
-rw-r--r--libass/ass.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 41f72d6..5ec8a95 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -349,12 +349,12 @@ static int process_event_tail(ASS_Track *track, ASS_Event *event,
while (1) {
NEXT(q, tname);
if (ass_strcasecmp(tname, "Text") == 0) {
- char *last;
event->Text = strdup(p);
if (event->Text && *event->Text != 0) {
- last = event->Text + strlen(event->Text) - 1;
- if (last >= event->Text && *last == '\r')
- *last = 0;
+ char *end = event->Text + strlen(event->Text);
+ while (end > event->Text &&
+ (end[-1] == '\r' || end[-1] == '\t' || end[-1] == ' '))
+ *--end = 0;
}
event->Duration -= event->Start;
free(format);