@@ -1243,18 +1243,16 @@ char *mingw_getcwd(char *pointer, int len)
1243
1243
{
1244
1244
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1245
1245
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1246
+ HANDLE hnd ;
1246
1247
1247
1248
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1248
1249
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1249
1250
return NULL ;
1250
1251
}
1251
- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1252
- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1253
- HANDLE hnd = CreateFileW (cwd , 0 ,
1254
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1255
- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1256
- if (hnd == INVALID_HANDLE_VALUE )
1257
- return NULL ;
1252
+ hnd = CreateFileW (cwd , 0 ,
1253
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1254
+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1255
+ if (hnd != INVALID_HANDLE_VALUE ) {
1258
1256
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1259
1257
CloseHandle (hnd );
1260
1258
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1263,13 +1261,11 @@ char *mingw_getcwd(char *pointer, int len)
1263
1261
return NULL ;
1264
1262
return pointer ;
1265
1263
}
1266
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1267
- return NULL ;
1268
- if (GetFileAttributesW (wpointer ) == INVALID_FILE_ATTRIBUTES ) {
1264
+ if (GetFileAttributesW (cwd ) == INVALID_FILE_ATTRIBUTES ) {
1269
1265
errno = ENOENT ;
1270
1266
return NULL ;
1271
1267
}
1272
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1268
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1273
1269
return NULL ;
1274
1270
convert_slashes (pointer );
1275
1271
return pointer ;
0 commit comments