summaryrefslogtreecommitdiffstats
path: root/libass/ass_bitmap.c
diff options
context:
space:
mode:
authorDr.Smile <vabnick@gmail.com>2018-12-08 21:00:42 +0300
committerDr.Smile <vabnick@gmail.com>2019-05-20 01:05:10 +0300
commitd1feaf3684c14a24c707b6c50033d83014a8053b (patch)
tree56eed7c3526a0f1353c91a24844747f85c04df6e /libass/ass_bitmap.c
parent20a26e98c27387004151ce291c1e5e0bda3cc0dd (diff)
downloadlibass-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.c6
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;