Cygwin: remove old cruft from path_conv::check
Prior to commitb0717aae
, path_conv::check had the following code: if (strncmp (path, "\\\\.\\", 4)) { /* Windows ignores trailing dots and spaces in the last path component, and ignores exactly one trailing dot in inner path components. */ char *tail = NULL; [...] if (!tail || tail == path) /* nothing */; else if (tail[-1] != '\\') { *tail = '\0'; [...] } Commitb0717aae0
intended to disable this code, but it inadvertently disabled only part of it. In particular, the declaration of the local tail variable was in the disabled code, but the following remained: if (!tail || tail == path) /* nothing */; else if (tail[-1] != '\\') { *tail = '\0'; [...] } [A later commit removed the disabled code.] The tail variable here points into a string different from path, causing that string to be truncated under some circumstances. See https://cygwin.com/ml/cygwin/2019-09/msg00001.html for more details. This commit fixes the problem by removing the leftover code that was intended to be removed inb0717aae
.
This commit is contained in:
parent
4186409101
commit
9f24260ee9
|
@ -1168,19 +1168,6 @@ path_conv::check (const char *src, unsigned opt,
|
|||
|
||||
if (dev.isfs ())
|
||||
{
|
||||
if (strncmp (path, "\\\\.\\", 4))
|
||||
{
|
||||
if (!tail || tail == path)
|
||||
/* nothing */;
|
||||
else if (tail[-1] != '\\')
|
||||
*tail = '\0';
|
||||
else
|
||||
{
|
||||
error = ENOENT;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* If FS hasn't been checked already in symlink_info::check,
|
||||
do so now. */
|
||||
if (fs.inited ()|| fs.update (get_nt_native_path (), NULL))
|
||||
|
|
Loading…
Reference in New Issue