@@ -1070,18 +1070,16 @@ char *mingw_getcwd(char *pointer, int len)
1070
1070
{
1071
1071
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1072
1072
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1073
+ HANDLE hnd ;
1073
1074
1074
1075
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1075
1076
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1076
1077
return NULL ;
1077
1078
}
1078
- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1079
- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1080
- HANDLE hnd = CreateFileW (cwd , 0 ,
1081
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1082
- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1083
- if (hnd == INVALID_HANDLE_VALUE )
1084
- return NULL ;
1079
+ hnd = CreateFileW (cwd , 0 ,
1080
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1081
+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1082
+ if (hnd != INVALID_HANDLE_VALUE ) {
1085
1083
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1086
1084
CloseHandle (hnd );
1087
1085
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1090,9 +1088,7 @@ char *mingw_getcwd(char *pointer, int len)
1090
1088
return NULL ;
1091
1089
return pointer ;
1092
1090
}
1093
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1094
- return NULL ;
1095
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1091
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1096
1092
return NULL ;
1097
1093
convert_slashes (pointer );
1098
1094
return pointer ;
0 commit comments