@@ -1084,18 +1084,16 @@ char *mingw_getcwd(char *pointer, int len)
10841084{
10851085 wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
10861086 DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1087+ HANDLE hnd ;
10871088
10881089 if (!ret || ret >= ARRAY_SIZE (cwd )) {
10891090 errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
10901091 return NULL ;
10911092 }
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 ) {
10991097 ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
11001098 CloseHandle (hnd );
11011099 if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1104,9 +1102,7 @@ char *mingw_getcwd(char *pointer, int len)
11041102 return NULL ;
11051103 return pointer ;
11061104 }
1107- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1108- return NULL ;
1109- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1105+ if (xwcstoutf (pointer , cwd , len ) < 0 )
11101106 return NULL ;
11111107 convert_slashes (pointer );
11121108 return pointer ;
0 commit comments