summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-09-07 12:45:51 +0200
committerwm4 <wm4@nowhere>2015-09-07 13:18:00 +0200
commitcfc92009b01d36dd7e99f4ef2d2bb9e006b37d3e (patch)
tree253442484340d0de8d1aa72689c3f9158b44702b
parent373cb020aa96bf487d19ea3483db85fa22855ad0 (diff)
downloadlibass-cfc92009b01d36dd7e99f4ef2d2bb9e006b37d3e.tar.bz2
libass-cfc92009b01d36dd7e99f4ef2d2bb9e006b37d3e.tar.xz
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.
-rw-r--r--libass/ass_parse.c17
1 files 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;
}