From: Jonathan Nieder Date: Sun, 17 Oct 2010 01:11:11 GMT Subject: Re: [PATCH] merge-file: correctly find files when called in subdir Message-ID: <20101017011111.GA26656@burratino> In-Reply-To: Bert Wesarg wrote: > On Sat, Oct 16, 2010 at 13:33, Thomas Rast wrote: >> --- a/builtin/merge-file.c >> +++ b/builtin/merge-file.c >> @@ -65,10 +66,18 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) [...] >> +               if (prefix) >> +                       name = prefix_filename(prefix, prefixlen, argv[i]); >> +               else >> +                       name = argv[i]; > > I think you can safe this condition, if you set prefixlen to 0. I'm not so sure. On Windows, prefix_filename() starts with char *p; /* don't add prefix to absolute paths, but still replace '\' by '/' */ if (is_absolute_path(arg)) pfx_len = 0; else memcpy(path, pfx, pfx_len); and memcpy() has undefined behavior when pfx is NULL (even with pfx_len of 0; see WG14/N1256: 7.21.1 "String function conventions"). Even if the win32api memcpy does the right thing with NULL pfx, I cannot trust GCC when they are given that kind of license. :)