From 2bd7f980ac5b692b62b0765c4411129f953b0593 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 25 Nov 2012 00:32:47 +0100 Subject: memcpy_pic: kill useless/dangerous optimization The memcpy_pic() function had a rather dangerous optimization: when the limit2width flag was not set, it was allowed to overwrite the data between the last pixel of a line and the first pixel of the next line (i.e. write over the stride padding). That was also the reason why there are so many whacky names for this function (memcpy_pic, my_memcpy_pic, memcpy_pic2). Kill this optimization, and never overwrite the stride padding. The code doing this can still be used if there's no stride padding at all, though. Also use the name memcpy_pic for the proper function. Now it should be rather clear that my_memcpy_pic and memcpy_pic2 are compatibility aliases. They should go away over the time. --- video/memcpy_pic.h | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'video/memcpy_pic.h') diff --git a/video/memcpy_pic.h b/video/memcpy_pic.h index c2cd79314f..2def66f3a4 100644 --- a/video/memcpy_pic.h +++ b/video/memcpy_pic.h @@ -24,21 +24,17 @@ #include #include -#define memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 0) -#define my_memcpy_pic(d, s, b, h, ds, ss) memcpy_pic2(d, s, b, h, ds, ss, 1) +#define my_memcpy_pic memcpy_pic +#define memcpy_pic2(d, s, b, h, ds, ss, unused) memcpy_pic(d, s, b, h, ds, ss) -/** - * \param limit2width always skip data between end of line and start of next - * instead of copying the full block when strides are the same - */ -static inline void * memcpy_pic2(void * dst, const void * src, - int bytesPerLine, int height, - int dstStride, int srcStride, int limit2width) +static inline void * memcpy_pic(void * dst, const void * src, + int bytesPerLine, int height, + int dstStride, int srcStride) { int i; void *retval=dst; - if(!limit2width && dstStride == srcStride) + if(bytesPerLine == dstStride && dstStride == srcStride) { if (srcStride < 0) { src = (uint8_t*)src + (height-1)*srcStride; -- cgit v1.2.3