diff options
-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; } |