aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/mingw.c11
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
1205int mingw_chdir(const char *dirname) 1205int 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