@@ -1070,18 +1070,16 @@ char *mingw_getcwd(char *pointer, int len)
10701070{
10711071 wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
10721072 DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1073+ HANDLE hnd ;
10731074
10741075 if (!ret || ret >= ARRAY_SIZE (cwd )) {
10751076 errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
10761077 return NULL ;
10771078 }
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 ) {
10851083 ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
10861084 CloseHandle (hnd );
10871085 if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1090,9 +1088,7 @@ char *mingw_getcwd(char *pointer, int len)
10901088 return NULL ;
10911089 return pointer ;
10921090 }
1093- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1094- return NULL ;
1095- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1091+ if (xwcstoutf (pointer , cwd , len ) < 0 )
10961092 return NULL ;
10971093 convert_slashes (pointer );
10981094 return pointer ;
0 commit comments