@@ -1219,18 +1219,16 @@ char *mingw_getcwd(char *pointer, int len)
12191219{
12201220 wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
12211221 DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1222+ HANDLE hnd ;
12221223
12231224 if (!ret || ret >= ARRAY_SIZE (cwd )) {
12241225 errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
12251226 return NULL ;
12261227 }
1227- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1228- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1229- HANDLE hnd = CreateFileW (cwd , 0 ,
1230- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1231- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1232- if (hnd == INVALID_HANDLE_VALUE )
1233- return NULL ;
1228+ hnd = CreateFileW (cwd , 0 ,
1229+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1230+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1231+ if (hnd != INVALID_HANDLE_VALUE ) {
12341232 ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
12351233 CloseHandle (hnd );
12361234 if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1239,13 +1237,11 @@ char *mingw_getcwd(char *pointer, int len)
12391237 return NULL ;
12401238 return pointer ;
12411239 }
1242- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1243- return NULL ;
1244- if (GetFileAttributesW (wpointer ) == INVALID_FILE_ATTRIBUTES ) {
1240+ if (GetFileAttributesW (cwd ) == INVALID_FILE_ATTRIBUTES ) {
12451241 errno = ENOENT ;
12461242 return NULL ;
12471243 }
1248- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1244+ if (xwcstoutf (pointer , cwd , len ) < 0 )
12491245 return NULL ;
12501246 convert_slashes (pointer );
12511247 return pointer ;
0 commit comments