From: "Ronald S. Bultje" <[email protected]>
Fixes a crash when forcing libc to strictly adhere to malloc sizes.
---
libswscale/utils.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 296c845..71f75d9 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -1045,19 +1045,19 @@ int sws_init_context(SwsContext *c, SwsFilter
*srcFilter, SwsFilter *dstFilter)
//Note we need at least one pixel more at the end because of the MMX code
(just in case someone wanna replace the 4000/8000)
/* align at 16 bytes for AltiVec */
for (i=0; i<c->vLumBufSize; i++) {
- FF_ALLOCZ_OR_GOTO(c, c->lumPixBuf[i+c->vLumBufSize], dst_stride+1,
fail);
+ FF_ALLOCZ_OR_GOTO(c, c->lumPixBuf[i+c->vLumBufSize], dst_stride+16,
fail);
c->lumPixBuf[i] = c->lumPixBuf[i+c->vLumBufSize];
}
- c->uv_off_px = dst_stride_px;
- c->uv_off_byte = dst_stride;
+ c->uv_off_px = dst_stride_px + 64 / c->scalingBpp;
+ c->uv_off_byte = dst_stride + 16;
for (i=0; i<c->vChrBufSize; i++) {
- FF_ALLOC_OR_GOTO(c, c->chrUPixBuf[i+c->vChrBufSize], dst_stride*2+1,
fail);
+ FF_ALLOC_OR_GOTO(c, c->chrUPixBuf[i+c->vChrBufSize], dst_stride*2+32,
fail);
c->chrUPixBuf[i] = c->chrUPixBuf[i+c->vChrBufSize];
- c->chrVPixBuf[i] = c->chrVPixBuf[i+c->vChrBufSize] = c->chrUPixBuf[i]
+ (dst_stride >> 1);
+ c->chrVPixBuf[i] = c->chrVPixBuf[i+c->vChrBufSize] = c->chrUPixBuf[i]
+ (dst_stride >> 1) + 8;
}
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf)
for (i=0; i<c->vLumBufSize; i++) {
- FF_ALLOCZ_OR_GOTO(c, c->alpPixBuf[i+c->vLumBufSize], dst_stride+1,
fail);
+ FF_ALLOCZ_OR_GOTO(c, c->alpPixBuf[i+c->vLumBufSize],
dst_stride+16, fail);
c->alpPixBuf[i] = c->alpPixBuf[i+c->vLumBufSize];
}
--
1.7.5.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel