@@ -1084,18 +1084,16 @@ char *mingw_getcwd(char *pointer, int len)
1084
1084
{
1085
1085
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1086
1086
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1087
+ HANDLE hnd ;
1087
1088
1088
1089
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1089
1090
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1090
1091
return NULL ;
1091
1092
}
1092
- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1093
- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1094
- HANDLE hnd = CreateFileW (cwd , 0 ,
1095
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1096
- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1097
- if (hnd == INVALID_HANDLE_VALUE )
1098
- return NULL ;
1093
+ hnd = CreateFileW (cwd , 0 ,
1094
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1095
+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1096
+ if (hnd != INVALID_HANDLE_VALUE ) {
1099
1097
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1100
1098
CloseHandle (hnd );
1101
1099
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1104,9 +1102,7 @@ char *mingw_getcwd(char *pointer, int len)
1104
1102
return NULL ;
1105
1103
return pointer ;
1106
1104
}
1107
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1108
- return NULL ;
1109
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1105
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1110
1106
return NULL ;
1111
1107
convert_slashes (pointer );
1112
1108
return pointer ;
0 commit comments