If the destination planes are offset within the destination buffer,
writing the extra bytes at the end may write outside of the destination
buffer.
Originally committed as revision 31746 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
srcPtr+= srcStride[plane];
dstPtr+= dstStride[plane];
}
- } else if (dstStride[plane]==srcStride[plane] && srcStride[plane] > 0)
- memcpy(dst[plane] + dstStride[plane]*y, src[plane], height*dstStride[plane]);
- else {
+ } else if (dstStride[plane]==srcStride[plane] && srcStride[plane] > 0) {
+ if (height > 0)
+ memcpy(dst[plane] + dstStride[plane]*y, src[plane],
+ (height - 1)*dstStride[plane] + length);
+ } else {
if(is16BPS(c->srcFormat) && is16BPS(c->dstFormat))
length*=2;
for (i=0; i<height; i++) {