swrast: use memmove() instead of memcpy() in the SHIFT_ARRAY macro
authorBrian Paul <brianp@vmware.com>
Thu, 5 Jan 2012 18:59:30 +0000 (11:59 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 5 Jan 2012 19:49:45 +0000 (12:49 -0700)
The src/dst arrays would overlap but dst was less than src so a simple
version of memcpy() would do the right thing.  But this isn't guaranteed
when memcpy() is optimized.

Fixes demos/copypix when the dest region was clipped by the left side of
the window.

Reviewed-by: Adam Jackson <ajax@redhat.com>
src/mesa/swrast/s_span.c

index 4124e444e000c37368eddc4e248b6ab22915e106..8f02eeae79e34589fa2f32f05fdd2b2e4a28f14c 100644 (file)
@@ -776,7 +776,7 @@ clip_span( struct gl_context *ctx, SWspan *span )
          span->intTex[1] += leftClip * span->intTexStep[1];
 
 #define SHIFT_ARRAY(ARRAY, SHIFT, LEN) \
-         memcpy(ARRAY, ARRAY + (SHIFT), (LEN) * sizeof(ARRAY[0]))
+         memmove(ARRAY, ARRAY + (SHIFT), (LEN) * sizeof(ARRAY[0]))
 
          for (i = 0; i < FRAG_ATTRIB_MAX; i++) {
             if (span->arrayAttribs & (1 << i)) {