Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-10-16 19:00:59 +0400
committerCorinna Vinschen <corinna@vinschen.de>2014-10-16 19:00:59 +0400
commitec2a57f4764ae33d232399166243898b23055cf3 (patch)
treefb5b3040932bd6dae7c6e67f19a813c64ea2ef4e /newlib
parentb23449bce18c689fe273d0e72c5ea9055ea434ab (diff)
* libc/unix/getcwd.c (getcwd): Close directory also in case of an error.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog4
-rw-r--r--newlib/libc/unix/getcwd.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 2020fc8dd..1eb4ddc2c 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,7 @@
+2014-10-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * libc/unix/getcwd.c (getcwd): Close directory also in case of an error.
+
2014-10-10 Thomas Uhle <thomas.uhle@eas.iis.fraunhofer.de>
* libc/include/_ansi.h: _LONG_LONG_TYPE definition removed.
diff --git a/newlib/libc/unix/getcwd.c b/newlib/libc/unix/getcwd.c
index 92f1b20fd..63f342402 100644
--- a/newlib/libc/unix/getcwd.c
+++ b/newlib/libc/unix/getcwd.c
@@ -57,7 +57,7 @@ getcwd (pt, size)
size_t size;
{
register struct dirent *dp;
- register DIR *dir;
+ register DIR *dir = NULL;
register dev_t dev;
register ino_t ino;
register int first;
@@ -237,6 +237,7 @@ getcwd (pt, size)
bpt -= strlen (dp->d_name);
bcopy (dp->d_name, bpt, strlen (dp->d_name));
(void) closedir (dir);
+ dir = NULL;
/* Truncate any file name. */
*bup = '\0';
@@ -256,6 +257,8 @@ notfound:
err:
if (ptsize)
free (pt);
+ if (dir)
+ (void) closedir (dir);
free (up);
return (char *) NULL;
}