@@ -1260,18 +1260,16 @@ char *mingw_getcwd(char *pointer, int len)
1260
1260
{
1261
1261
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1262
1262
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1263
+ HANDLE hnd ;
1263
1264
1264
1265
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1265
1266
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1266
1267
return NULL ;
1267
1268
}
1268
- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1269
- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1270
- HANDLE hnd = CreateFileW (cwd , 0 ,
1271
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1272
- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1273
- if (hnd == INVALID_HANDLE_VALUE )
1274
- return NULL ;
1269
+ hnd = CreateFileW (cwd , 0 ,
1270
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1271
+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1272
+ if (hnd != INVALID_HANDLE_VALUE ) {
1275
1273
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1276
1274
CloseHandle (hnd );
1277
1275
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1280,9 +1278,7 @@ char *mingw_getcwd(char *pointer, int len)
1280
1278
return NULL ;
1281
1279
return pointer ;
1282
1280
}
1283
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1284
- return NULL ;
1285
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1281
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1286
1282
return NULL ;
1287
1283
convert_slashes (pointer );
1288
1284
return pointer ;
0 commit comments