summaryrefslogtreecommitdiffstats
path: root/libass/ass.c
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2023-11-08 22:53:51 +0200
committerOleg Oshmyan <chortos@inbox.lv>2023-11-08 23:05:46 +0200
commit9f4e6afeec54c0d240a9b8377f27e6c5b7c2bde0 (patch)
treeeb507fb628cbbb92285fbba85afe9fd1913ef294 /libass/ass.c
parenta196fdb9afa2a085b03f23fc7d5740dacb0b3023 (diff)
downloadlibass-9f4e6afeec54c0d240a9b8377f27e6c5b7c2bde0.tar.bz2
libass-9f4e6afeec54c0d240a9b8377f27e6c5b7c2bde0.tar.xz
Drop style if strdup(Name) fails rather than try to rename it
Diffstat (limited to 'libass/ass.c')
-rw-r--r--libass/ass.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 5919dc1..42c8ad1 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -619,7 +619,6 @@ void ass_process_force_style(ASS_Track *track)
*/
static int process_style(ASS_Track *track, char *str)
{
-
char *token;
char *tname;
char *p = str;
@@ -667,6 +666,8 @@ static int process_style(ASS_Track *track, char *str)
PARSE_START
STARREDSTRVAL(Name)
+ if (!target->Name)
+ goto fail;
STRVAL(FontName)
COLORVAL(PrimaryColour)
COLORVAL(SecondaryColour)
@@ -704,7 +705,10 @@ static int process_style(ASS_Track *track, char *str)
FPVAL(Shadow)
PARSE_END
}
+
free(format);
+ format = NULL;
+
// VSF compat: always set BackColour Alpha to 0x80 in SSA
if (track->track_type == TRACK_TYPE_SSA)
set_style_alpha(style, ssa_alpha, 0x80);
@@ -723,15 +727,17 @@ static int process_style(ASS_Track *track, char *str)
}
if (!style->FontName)
style->FontName = strdup("Arial");
- if (!style->Name || !style->FontName) {
- ass_free_style(track, sid);
- track->n_styles--;
- return -1;
- }
+ if (!style->Name || !style->FontName)
+ goto fail;
if (strcmp(target->Name, "Default") == 0)
track->default_style = sid;
return 0;
+fail:
+ free(format);
+ ass_free_style(track, sid);
+ track->n_styles--;
+ return -1;
}
static bool format_line_compare(const char *fmt1, const char *fmt2)