diff options
author | wm4 <wm4@nowhere> | 2015-09-07 12:45:51 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-09-07 13:18:00 +0200 |
commit | cfc92009b01d36dd7e99f4ef2d2bb9e006b37d3e (patch) | |
tree | 253442484340d0de8d1aa72689c3f9158b44702b | |
parent | 373cb020aa96bf487d19ea3483db85fa22855ad0 (diff) | |
download | libass-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.c | 17 |
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; } |