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