summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog13
-rw-r--r--winsup/cygwin/dir.cc12
2 files changed, 16 insertions, 9 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 1c7b8ef34..868bc89d5 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,8 +1,13 @@
-2001-01-05 Corinna Vinschen <corinna@vinschen.de>
+2002-01-05 Christopher Faylor <cgf@redhat.com>
- exceptions.cc (sig_handle): Set default action for SIGURG to SIG_IGN.
+ * dir.cc (opendir): Guarantee release of alloced fhandler structure on
+ error.
-2001-01-05 Corinna Vinschen <corinna@vinschen.de>
+2002-01-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * exceptions.cc (sig_handle): Set default action for SIGURG to SIG_IGN.
+
+2002-01-05 Corinna Vinschen <corinna@vinschen.de>
* dtable.cc (dtable::init_std_file_from_handle): Don't treat NULL
handle as errorneous.
@@ -15,7 +20,7 @@
* dir.cc (opendir): Don't attempt to call sub-opendir if ENOENT.
-2001-01-04 Corinna Vinschen <corinna@vinschen.de>
+2002-01-04 Corinna Vinschen <corinna@vinschen.de>
* net.cc: Replace usage of AF_UNIX by Posix compliant AF_LOCAL
throughout.
diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc
index 44db5d7be..40411b48c 100644
--- a/winsup/cygwin/dir.cc
+++ b/winsup/cygwin/dir.cc
@@ -88,14 +88,16 @@ opendir (const char *name)
PC_SYM_FOLLOW | PC_FULL, NULL);
if (!fh)
res = NULL;
- else if (!pc.exists ())
- set_errno (ENOENT);
+ else if (pc.exists ())
+ res = fh->opendir (pc);
else
{
- res = fh->opendir (pc);
- if (!res)
- delete fh;
+ set_errno (ENOENT);
+ res = NULL;
}
+
+ if (!res && fh)
+ delete fh;
return res;
}