summaryrefslogtreecommitdiffstats
path: root/libass/ass_render.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r--libass/ass_render.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 7b85706..d2f3c1b 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -743,13 +743,19 @@ static void blend_vector_clip(ass_renderer_t *render_priv,
FT_BitmapGlyph clip_bm;
ass_image_t *cur;
ass_drawing_t *drawing = render_priv->state.clip_drawing;
+ int error;
if (!drawing)
return;
// Rasterize it
FT_Glyph_Copy((FT_Glyph) drawing->glyph, &glyph);
- FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);
+ error = FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);
+ if (error) {
+ ass_msg(render_priv->library, MSGL_V,
+ "Clip vector rasterization failed: %d. Skipping.", error);
+ goto blend_vector_exit;
+ }
clip_bm = (FT_BitmapGlyph) glyph;
clip_bm->top = -clip_bm->top;
@@ -832,6 +838,7 @@ 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(glyph);
+blend_vector_exit:
ass_drawing_free(render_priv->state.clip_drawing);
render_priv->state.clip_drawing = 0;
}