diff options
author | Grigori Goronzy <greg@kinoho.net> | 2014-05-30 01:12:49 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@kinoho.net> | 2014-05-30 01:12:49 +0200 |
commit | 18f02cba283171d5010815a7021ecd76d006d4c8 (patch) | |
tree | fd9655ab619cab610003c805c6fd8b7568b63f8f /libass/ass_render.c | |
parent | bdf51ba70eb3858896b6b95447de7262aa4f1eee (diff) | |
parent | 59f2290907e61038a7f07af536cb56981835b35e (diff) | |
download | libass-18f02cba283171d5010815a7021ecd76d006d4c8.tar.bz2 libass-18f02cba283171d5010815a7021ecd76d006d4c8.tar.xz |
Merge pull request #102 from grigorig/fribidi-errorhandle
shaper: add FriBidi error handling
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; |