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.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index cff7736b..62462746 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -1438,8 +1438,12 @@ get_bitmap_glyph(ASS_Renderer *render_priv, GlyphInfo *info,
w *= STROKER_PRECISION / POSITION_PRECISION;
frexp(w * (FFMAX(mxx, myx) + mzx * rz), &k->scale_ord_x);
frexp(w * (FFMAX(mxy, myy) + mzy * rz), &k->scale_ord_y);
- k->border.x = lrint(ldexp(bord_x, k->scale_ord_x) / STROKER_PRECISION);
- k->border.y = lrint(ldexp(bord_y, k->scale_ord_y) / STROKER_PRECISION);
+ bord_x = ldexp(bord_x, k->scale_ord_x);
+ bord_y = ldexp(bord_y, k->scale_ord_y);
+ if (!(bord_x < OUTLINE_MAX && bord_y < OUTLINE_MAX))
+ return;
+ k->border.x = lrint(bord_x / STROKER_PRECISION);
+ k->border.y = lrint(bord_y / STROKER_PRECISION);
if (!k->border.x && !k->border.y) {
ass_cache_inc_ref(info->bm);
info->bm_o = info->bm;