@@ -1219,18 +1219,16 @@ char *mingw_getcwd(char *pointer, int len)
1219
1219
{
1220
1220
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1221
1221
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1222
+ HANDLE hnd ;
1222
1223
1223
1224
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1224
1225
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1225
1226
return NULL ;
1226
1227
}
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 ) {
1234
1232
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1235
1233
CloseHandle (hnd );
1236
1234
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1239,13 +1237,11 @@ char *mingw_getcwd(char *pointer, int len)
1239
1237
return NULL ;
1240
1238
return pointer ;
1241
1239
}
1242
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1243
- return NULL ;
1244
- if (GetFileAttributesW (wpointer ) == INVALID_FILE_ATTRIBUTES ) {
1240
+ if (GetFileAttributesW (cwd ) == INVALID_FILE_ATTRIBUTES ) {
1245
1241
errno = ENOENT ;
1246
1242
return NULL ;
1247
1243
}
1248
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1244
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1249
1245
return NULL ;
1250
1246
convert_slashes (pointer );
1251
1247
return pointer ;
0 commit comments