summaryrefslogtreecommitdiffstats
path: root/newlib
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-10-16 15:00:59 +0000
committerCorinna Vinschen <corinna@vinschen.de>2014-10-16 15:00:59 +0000
commitec2a57f4764ae33d232399166243898b23055cf3 (patch)
treefb5b3040932bd6dae7c6e67f19a813c64ea2ef4e /newlib
parentb23449bce18c689fe273d0e72c5ea9055ea434ab (diff)
downloadcygnal-ec2a57f4764ae33d232399166243898b23055cf3.tar.gz
cygnal-ec2a57f4764ae33d232399166243898b23055cf3.tar.bz2
cygnal-ec2a57f4764ae33d232399166243898b23055cf3.zip
* 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;
}