Re: [PATCH] merge-file: correctly find files when called in subdir
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Oct 17, 2010, 01:11 UTC
- Message-ID
- <20101017011111.GA26656@burratino>
- In-Reply-To
- <AANLkTimzuF3Ku_Jjnq0qKFtrDfAfz8YxChomZr8+Shm1@mail.gmail.com>
Bert Wesarg wrote:
> On Sat, Oct 16, 2010 at 13:33, Thomas Rast <trast@student.ethz.ch> 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)
[...]
Show 6 quoted lines
>> + 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. :)