From 72ae5049e1c92d76b72263d98744b4dfbb002a2c Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Mon, 19 Jul 2010 07:02:31 +0000 Subject: Do planar copy with a single memcpy only if the stride is equal to the length This avoids writing outside of the designated rectangle. Originally committed as revision 31756 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale --- libswscale/swscale.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index b589131375..0340e80bfe 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -1663,10 +1663,10 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[ srcPtr+= srcStride[plane]; dstPtr+= dstStride[plane]; } - } else if (dstStride[plane]==srcStride[plane] && srcStride[plane] > 0) { - if (height > 0) + } else if (dstStride[plane]==srcStride[plane] && srcStride[plane] > 0 && + srcStride[plane] == length) { memcpy(dst[plane] + dstStride[plane]*y, src[plane], - (height - 1)*dstStride[plane] + length); + height*dstStride[plane]); } else { if(is16BPS(c->srcFormat) && is16BPS(c->dstFormat)) length*=2; -- cgit v1.2.3