Re: [PATCH] mv: prevent mismatched data when ignoring errors.
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- Mar 11, 2014, 02:00 UTC
- Message-ID
- <20140311020003.GE4271@vauxhall.crustytoothpaste.net>
- In-Reply-To
- <20140311015603.GA12180@sigill.intra.peff.net>
On Mon, Mar 10, 2014 at 09:56:03PM -0400, Jeff King wrote:
Show 28 quoted lines
> 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 <sandals@crustytoothpaste.net> > > --- > > 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