On Mon, Mar 10, 2014 at 09:56:03PM -0400, Jeff King wrote: > On Sat, Mar 08, 2014 at 07:21:39PM +0000, brian m. carlson wrote: > > > We shrink the source and destination arrays, but not the modes or > > submodule_gitfile arrays, resulting in potentially mismatched data. Shrink > > all the arrays at the same time to prevent this. > > > > Signed-off-by: brian m. carlson > > --- > > builtin/mv.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/builtin/mv.c b/builtin/mv.c > > index f99c91e..b20cd95 100644 > > --- a/builtin/mv.c > > +++ b/builtin/mv.c > > @@ -230,6 +230,11 @@ int cmd_mv(int argc, const char **argv, const char *prefix) > > memmove(destination + i, > > destination + i + 1, > > (argc - i) * sizeof(char *)); > > + memmove(modes + i, modes + i + 1, > > + (argc - i) * sizeof(char *)); > > + memmove(submodule_gitfile + i, > > + submodule_gitfile + i + 1, > > + (argc - i) * sizeof(char *)); > > I haven't looked that closely, but would it be crazy to suggest that > these arrays all be squashed into one array-of-struct? It would be less > error prone and perhaps more readable. I was thinking of doing exactly that, but the way internal_copy_pathspec is written, I'd need to use offsetof to have it write to the right structure members. That's a bit more gross than I wanted, but I'll probably implement it at some point during the upcoming week. -- brian m. carlson / brian with sandals: Houston, Texas, US +1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187