diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2014-10-16 15:00:59 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2014-10-16 15:00:59 +0000 |
commit | ec2a57f4764ae33d232399166243898b23055cf3 (patch) | |
tree | fb5b3040932bd6dae7c6e67f19a813c64ea2ef4e /newlib | |
parent | b23449bce18c689fe273d0e72c5ea9055ea434ab (diff) | |
download | cygnal-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/ChangeLog | 4 | ||||
-rw-r--r-- | newlib/libc/unix/getcwd.c | 5 |
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; } |