summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;
}