Use memmove() not memcpy() to slide some pointers down.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 27 Apr 2016 22:19:28 +0000 (18:19 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 27 Apr 2016 22:19:28 +0000 (18:19 -0400)
The previous coding here was formally undefined, though it seems to
accidentally work on most platforms in the buildfarm.  Caught by some
OpenBSD platforms in which libc contains an assertion check for
overlapping areas passed to memcpy().

Thomas Munro

src/test/isolation/isolationtester.c

index 2969ce9470d64c4e41b1612de0eceaa27f99041d..908a7ce80027ee16fa1f206b4680dd6150da90fd 100644 (file)
@@ -554,8 +554,8 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
 
                /* Remove that step from the waiting[] array. */
                if (w + 1 < nwaiting)
-                   memcpy(&waiting[w], &waiting[w + 1],
-                          (nwaiting - (w + 1)) * sizeof(Step *));
+                   memmove(&waiting[w], &waiting[w + 1],
+                           (nwaiting - (w + 1)) * sizeof(Step *));
                nwaiting--;
 
                break;
@@ -582,8 +582,8 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
                    /* This one finished, too! */
                    errorstep[nerrorstep++] = waiting[w];
                    if (w + 1 < nwaiting)
-                       memcpy(&waiting[w], &waiting[w + 1],
-                              (nwaiting - (w + 1)) * sizeof(Step *));
+                       memmove(&waiting[w], &waiting[w + 1],
+                               (nwaiting - (w + 1)) * sizeof(Step *));
                    nwaiting--;
                }
            }
@@ -614,8 +614,8 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
            {
                errorstep[nerrorstep++] = waiting[w];
                if (w + 1 < nwaiting)
-                   memcpy(&waiting[w], &waiting[w + 1],
-                          (nwaiting - (w + 1)) * sizeof(Step *));
+                   memmove(&waiting[w], &waiting[w + 1],
+                           (nwaiting - (w + 1)) * sizeof(Step *));
                nwaiting--;
            }
        }