diff options
-rw-r--r-- | win32/mingw.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/win32/mingw.c b/win32/mingw.c index ec7d6c456..22a3ede58 100644 --- a/win32/mingw.c +++ b/win32/mingw.c | |||
@@ -1204,13 +1204,16 @@ int mingw_mkdir(const char *path, int mode UNUSED_PARAM) | |||
1204 | #undef chdir | 1204 | #undef chdir |
1205 | int mingw_chdir(const char *dirname) | 1205 | int mingw_chdir(const char *dirname) |
1206 | { | 1206 | { |
1207 | struct stat st; | ||
1207 | int ret = -1; | 1208 | int ret = -1; |
1208 | char *realdir = xmalloc_realpath(dirname); | 1209 | const char *realdir = dirname; |
1210 | |||
1211 | if (lstat(dirname, &st) == 0 && S_ISLNK(st.st_mode)) | ||
1212 | realdir = auto_string(xmalloc_readlink(dirname)); | ||
1209 | 1213 | ||
1210 | if (realdir) { | 1214 | if (realdir) |
1211 | ret = chdir(realdir); | 1215 | ret = chdir(realdir); |
1212 | free(realdir); | 1216 | |
1213 | } | ||
1214 | return ret; | 1217 | return ret; |
1215 | } | 1218 | } |
1216 | 1219 | ||