From cfc92009b01d36dd7e99f4ef2d2bb9e006b37d3e Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 7 Sep 2015 12:45:51 +0200 Subject: ass_parse: add check against ass_drawing_new() failure Also move the argument parsing part to the top of the function. IT's easier to read this way. --- libass/ass_parse.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libass/ass_parse.c b/libass/ass_parse.c index 61ba691..c818e73 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -237,22 +237,23 @@ static int parse_vector_clip(ASS_Renderer *render_priv, { int scale = 1; ASS_Drawing *drawing = render_priv->state.clip_drawing; - struct arg text; if (nargs != 1 && nargs != 2) return 0; + if (nargs == 2) + scale = argtoi(args[0]); + struct arg text = args[nargs - 1]; ass_drawing_free(drawing); render_priv->state.clip_drawing = ass_drawing_new(render_priv->library, render_priv->ftlibrary); drawing = render_priv->state.clip_drawing; - if (nargs == 2) - scale = argtoi(args[0]); - drawing->scale = scale; - drawing->scale_x = render_priv->font_scale_x * render_priv->font_scale; - drawing->scale_y = render_priv->font_scale; - text = args[nargs - 1]; - ass_drawing_set_text(drawing, text.start, text.end - text.start); + if (drawing) { + drawing->scale = scale; + drawing->scale_x = render_priv->font_scale_x * render_priv->font_scale; + drawing->scale_y = render_priv->font_scale; + ass_drawing_set_text(drawing, text.start, text.end - text.start); + } return 1; } -- cgit v1.2.3