3.0.7(0.338/5/3): Possible reference to Developer's instances of dev files in deployed build

Ken Brown kbrown@cornell.edu
Mon Dec 9 13:05:00 GMT 2019


On 12/9/2019 4:17 AM, Corinna Vinschen wrote:
> On Dec  7 21:03, Ken Brown wrote:
>> I don't have any words of wisdom here, but I need to correct something I said
>> earlier.
>>
>> On 12/4/2019 3:50 PM, Ken Brown wrote:
>>> The assertion fails because 'Z:' doesn't contain a backslash.
>>
>> This is not quite right.  It's true that path_conv::check strips the trailing
>> backslash from Z:\, but then it adds it back before calling symlink_info::check:
>>
>>         /* If path is only a drivename, Windows interprets it as the
>> 	 current working directory on this drive instead of the root
>> 	 dir which is what we want. So we need the trailing backslash
>> 	 in this case. */
>>         if (full_path[0] && full_path[1] == ':' && full_path[2] == '\0')
>> 	{
>> 	  full_path[2] = '\\';
>> 	  full_path[3] = '\0';
>> 	}
>>
>> Thus symlink_info::check is in fact called on Z:\, but the assertion fails
>> because the code at path.cc:2905 is looking for a backslash prior to the
>> trailing backslash.  So maybe the right fix for the assertion failure is the
>> following:
>>
>> --- a/winsup/cygwin/path.cc
>> +++ b/winsup/cygwin/path.cc
>> @@ -2895,7 +2895,8 @@ restart:
>>                slow down normal operation.  This extra check only kicks in if
>>                we encountered a STATUS_OBJECT_NAME_NOT_FOUND *and* we didn't
>>                already attach a suffix. */
>> -         if (!restarted && !*ext_here && !(mount_flags & MOUNT_DOS))
>> +         if (!restarted && !*ext_here && ext_here[-1] != '\\'
>> +             && !(mount_flags & MOUNT_DOS))
>>               {
>>                 /* Check for trailing dot or space or leading space in
>>                    last component. */
> 
> Ok, please push that.  I'll create a snapshot so Wilfed can test this.

Done.  I'll document it once Wilfed verifies that it fixes his problem.

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list