@@ -1137,18 +1137,16 @@ char *mingw_getcwd(char *pointer, int len)
1137
1137
{
1138
1138
wchar_t cwd [MAX_PATH ], wpointer [MAX_PATH ];
1139
1139
DWORD ret = GetCurrentDirectoryW (ARRAY_SIZE (cwd ), cwd );
1140
+ HANDLE hnd ;
1140
1141
1141
1142
if (!ret || ret >= ARRAY_SIZE (cwd )) {
1142
1143
errno = ret ? ENAMETOOLONG : err_win_to_posix (GetLastError ());
1143
1144
return NULL ;
1144
1145
}
1145
- ret = GetLongPathNameW (cwd , wpointer , ARRAY_SIZE (wpointer ));
1146
- if (!ret && GetLastError () == ERROR_ACCESS_DENIED ) {
1147
- HANDLE hnd = CreateFileW (cwd , 0 ,
1148
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1149
- OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1150
- if (hnd == INVALID_HANDLE_VALUE )
1151
- return NULL ;
1146
+ hnd = CreateFileW (cwd , 0 ,
1147
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL ,
1148
+ OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );
1149
+ if (hnd != INVALID_HANDLE_VALUE ) {
1152
1150
ret = GetFinalPathNameByHandleW (hnd , wpointer , ARRAY_SIZE (wpointer ), 0 );
1153
1151
CloseHandle (hnd );
1154
1152
if (!ret || ret >= ARRAY_SIZE (wpointer ))
@@ -1157,13 +1155,11 @@ char *mingw_getcwd(char *pointer, int len)
1157
1155
return NULL ;
1158
1156
return pointer ;
1159
1157
}
1160
- if (!ret || ret >= ARRAY_SIZE (wpointer ))
1161
- return NULL ;
1162
- if (GetFileAttributesW (wpointer ) == INVALID_FILE_ATTRIBUTES ) {
1158
+ if (GetFileAttributesW (cwd ) == INVALID_FILE_ATTRIBUTES ) {
1163
1159
errno = ENOENT ;
1164
1160
return NULL ;
1165
1161
}
1166
- if (xwcstoutf (pointer , wpointer , len ) < 0 )
1162
+ if (xwcstoutf (pointer , cwd , len ) < 0 )
1167
1163
return NULL ;
1168
1164
convert_slashes (pointer );
1169
1165
return pointer ;
0 commit comments