summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-08-20 14:29:56 +0000
committerCorinna Vinschen <corinna@vinschen.de>2010-08-20 14:29:56 +0000
commita6fc3a61c2364a54c676a452589a82b6432f8823 (patch)
treedb15769fd5f9c7a6570d1cbd747ca4abf887fe14
parent74f50846a9d97cfcce2f1d784f2a67c6f889d716 (diff)
downloadcygnal-a6fc3a61c2364a54c676a452589a82b6432f8823.tar.gz
cygnal-a6fc3a61c2364a54c676a452589a82b6432f8823.tar.bz2
cygnal-a6fc3a61c2364a54c676a452589a82b6432f8823.zip
* path.cc (path_conv::check): Close handle in conv_handle if we're
following a symlink.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/path.cc3
2 files changed, 8 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 7ec979974..5053b4efc 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (path_conv::check): Close handle in conv_handle if we're
+ following a symlink.
+
2010-08-20 Pedro Izecksohn <pedro.izecksohn@gmail.com>
* endian.h (htobe16, htobe32, htobe64, be16toh, be32toh, be64toh,
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index fb4526fd5..deefc7791 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -900,6 +900,9 @@ is_virtual_symlink:
/* Following a symlink we can't trust the collected filesystem
information any longer. */
fs.clear ();
+ /* Close handle, if we have any. Otherwise we're collecting
+ handles while following symlinks. */
+ conv_handle.close ();
break;
}
else if (sym.error && sym.error != ENOENT)