@@ -1152,18 +1152,16 @@ char *mingw_getcwd(char *pointer, int len)
1152
1152
{
1153
1153
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1154
1154
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1155
+ HANDLE hnd ;
1155
1156
1156
1157
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1157
1158
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1158
1159
return NULL ;
1159
1160
}
1160
- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1161
- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1162
- HANDLE hnd = CreateFileW (cwd , 0 ,
1163
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1164
- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1165
- if (hnd == INVALID_HANDLE_VALUE )
1166
- return NULL ;
1161
+ hnd = CreateFileW (cwd , 0 ,
1162
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1163
+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1164
+ if (hnd != INVALID_HANDLE_VALUE ) {
1167
1165
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1168
1166
CloseHandle (hnd );
1169
1167
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1172,13 +1170,11 @@ char *mingw_getcwd(char *pointer, int len)
1172
1170
return NULL ;
1173
1171
return pointer ;
1174
1172
}
1175
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1176
- return NULL ;
1177
- if (GetFileAttributesW (wpointer ) == INVALID_FILE_ATTRIBUTES ) {
1173
+ if (GetFileAttributesW (cwd ) == INVALID_FILE_ATTRIBUTES ) {
1178
1174
errno = ENOENT ;
1179
1175
return NULL ;
1180
1176
}
1181
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1177
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1182
1178
return NULL ;
1183
1179
convert_slashes (pointer );
1184
1180
return pointer ;
0 commit comments