summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/fhandler.h1
-rw-r--r--winsup/cygwin/fhandler_process.cc6
3 files changed, 13 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index c47b9e492..0abec830e 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_process::closedir): Declare.
+ * fhandler_process.cc (fhandler_process::closedir): New function to
+ avoid a SEGV in fhandler_proc::closedir.
+
2011-10-10 Christopher Faylor <me.cygwin2011@cgf.cx>
* fhandler_tty.cc (fhandler_pty_slave::open): Clarify debugging output.
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index be6e012b0..cc391ae78 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -1531,6 +1531,7 @@ class fhandler_process: public fhandler_proc
fhandler_process ();
virtual_ftype_t exists();
DIR *opendir (int fd) __attribute__ ((regparm (2)));
+ int closedir (DIR *);
int readdir (DIR *, dirent *) __attribute__ ((regparm (3)));
int open (int flags, mode_t mode = 0);
int __stdcall fstat (struct __stat64 *buf) __attribute__ ((regparm (2)));
diff --git a/winsup/cygwin/fhandler_process.cc b/winsup/cygwin/fhandler_process.cc
index 91e2286d0..128b35aa4 100644
--- a/winsup/cygwin/fhandler_process.cc
+++ b/winsup/cygwin/fhandler_process.cc
@@ -210,6 +210,12 @@ fhandler_process::opendir (int fd)
}
int
+fhandler_process::closedir (DIR *dir)
+{
+ return fhandler_virtual::closedir (dir);
+}
+
+int
fhandler_process::readdir (DIR *dir, dirent *de)
{
int res = ENMFILE;