diff options
author | Dr.Smile <vabnick@gmail.com> | 2018-12-08 21:00:42 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2019-05-20 01:05:10 +0300 |
commit | d1feaf3684c14a24c707b6c50033d83014a8053b (patch) | |
tree | 56eed7c3526a0f1353c91a24844747f85c04df6e /libass/ass_bitmap.c | |
parent | 20a26e98c27387004151ce291c1e5e0bda3cc0dd (diff) | |
download | libass-d1feaf3684c14a24c707b6c50033d83014a8053b.tar.bz2 libass-d1feaf3684c14a24c707b6c50033d83014a8053b.tar.xz |
renderer: eliminate use of bitmap pointers as mode flags
Render logic should depend only on input subs
and not on some internal state such as bitmap pointers.
That can prevent incorrect behavior in case of allocation failure.
Diffstat (limited to 'libass/ass_bitmap.c')
-rw-r--r-- | libass/ass_bitmap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libass/ass_bitmap.c b/libass/ass_bitmap.c index 9ae8d7a..e43f727 100644 --- a/libass/ass_bitmap.c +++ b/libass/ass_bitmap.c @@ -199,6 +199,9 @@ bool outline_to_bitmap(ASS_Renderer *render_priv, Bitmap *bm, */ void fix_outline(Bitmap *bm_g, Bitmap *bm_o) { + if (!bm_g->buffer || !bm_o->buffer) + return; + int32_t l = FFMAX(bm_o->left, bm_g->left); int32_t t = FFMAX(bm_o->top, bm_g->top); int32_t r = FFMIN(bm_o->left + bm_o->stride, bm_g->left + bm_g->stride); @@ -223,6 +226,9 @@ void shift_bitmap(Bitmap *bm, int shift_x, int shift_y) { assert((shift_x & ~63) == 0 && (shift_y & ~63) == 0); + if (!bm->buffer) + return; + int32_t w = bm->w, h = bm->h; ptrdiff_t s = bm->stride; uint8_t *buf = bm->buffer; |