]> granicus.if.org Git - libass/commitdiff
Fix memory leak with drawings
authorwm4 <wm4@nowhere>
Sun, 10 May 2015 20:28:23 +0000 (22:28 +0200)
committerwm4 <wm4@nowhere>
Sun, 10 May 2015 20:52:11 +0000 (22:52 +0200)
What.

Closes #175.

libass/ass_render.c

index 21c6f6f1a01b0798cdb51cbaf30b449b6e83b2d7..18ddea44afa99aad4fb0ae8db46c71c6d579718d 100644 (file)
@@ -972,6 +972,11 @@ static void free_render_context(ASS_Renderer *render_priv)
 
     render_priv->state.family = NULL;
     render_priv->state.clip_drawing = NULL;
+
+    TextInfo *text_info = &render_priv->text_info;
+    for (int n = 0; n < text_info->length; n++)
+        ass_drawing_free(text_info->glyphs[n].drawing);
+    text_info->length = 0;
 }
 
 /*
@@ -2450,8 +2455,8 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event,
         return 1;
     }
 
+    free_render_context(render_priv);
     init_render_context(render_priv, event);
-    text_info->length = 0;
 
     if (parse_events(render_priv, event))
         return 1;