diff options
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r-- | libass/ass_render.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 67d1b78..0d08dd9 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1985,7 +1985,11 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event, resolve_base_direction(render_priv->state.font_encoding)); ass_shaper_find_runs(render_priv->shaper, render_priv, glyphs, text_info->length); - ass_shaper_shape(render_priv->shaper, text_info); + if (ass_shaper_shape(render_priv->shaper, text_info) < 0) { + ass_msg(render_priv->library, MSGL_ERR, "Failed to shape text"); + free_render_context(render_priv); + return 1; + } // Retrieve glyphs for (i = 0; i < text_info->length; i++) { @@ -2075,6 +2079,12 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event, // Reorder text into visual order FriBidiStrIndex *cmap = ass_shaper_reorder(render_priv->shaper, text_info); + if (!cmap) { + ass_msg(render_priv->library, MSGL_ERR, "Failed to reorder text"); + ass_shaper_cleanup(render_priv->shaper, text_info); + free_render_context(render_priv); + return 1; + } // Reposition according to the map pen.x = 0; |