summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@blackbox>2009-07-19 08:39:24 +0200
committerGrigori Goronzy <greg@blackbox>2009-07-19 15:56:24 +0200
commit9ad13b1e609a5973a9f9288978b720d82a1382f7 (patch)
treef9435fdc45cf89cbd60cc439be11a2d302980fdb
parent3fd039c16184d5864c8a3be561c8b547b52ddf83 (diff)
downloadlibass-9ad13b1e609a5973a9f9288978b720d82a1382f7.tar.bz2
libass-9ad13b1e609a5973a9f9288978b720d82a1382f7.tar.xz
Fix drawing parser memory leak
Always free the drawing glyph in ass_drawing_free; do not double free clip vector bitmap.
-rw-r--r--libass/ass_drawing.c3
-rw-r--r--libass/ass_render.c1
2 files changed, 1 insertions, 3 deletions
diff --git a/libass/ass_drawing.c b/libass/ass_drawing.c
index 091ec87..0b270c1 100644
--- a/libass/ass_drawing.c
+++ b/libass/ass_drawing.c
@@ -384,6 +384,7 @@ ass_drawing_t *ass_drawing_new(void *fontconfig_priv, ass_font_t *font,
*/
void ass_drawing_free(ass_drawing_t* drawing)
{
+ FT_Done_Glyph((FT_Glyph) drawing->glyph);
free(drawing->text);
free(drawing);
}
@@ -481,5 +482,3 @@ FT_OutlineGlyph *ass_drawing_parse(ass_drawing_t *drawing, int raw_mode)
drawing_free_tokens(drawing->tokens);
return &drawing->glyph;
}
-
-
diff --git a/libass/ass_render.c b/libass/ass_render.c
index aeeb0ac..b045a75 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -817,7 +817,6 @@ static void blend_vector_clip(ass_renderer_t *render_priv,
}
// Free clip vector and its bitmap, we don't need it anymore
- FT_Done_Glyph((FT_Glyph) drawing->glyph);
FT_Done_Glyph(glyph);
ass_drawing_free(render_priv->state.clip_drawing);
render_priv->state.clip_drawing = 0;