]> granicus.if.org Git - libass/commitdiff
ass_parse: add check against ass_drawing_new() failure
authorwm4 <wm4@nowhere>
Mon, 7 Sep 2015 10:45:51 +0000 (12:45 +0200)
committerwm4 <wm4@nowhere>
Mon, 7 Sep 2015 11:18:00 +0000 (13:18 +0200)
Also move the argument parsing part to the top of the function. IT's
easier to read this way.

libass/ass_parse.c

index 61ba69151cbf53f6e8dcaf7506fb14c4c83f8f18..c818e73b4deb6d38968c9bb295c11f2f60b1fb9a 100644 (file)
@@ -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;
 }