diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-11-28 21:49:27 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-11-28 21:49:27 +0000 |
commit | e23afc3638a79daa7550f5c5a8a20c976db89318 (patch) | |
tree | 7f8f69ed3dc7d78d86a543f849608205f9578344 | |
parent | 2000-11-28 Chris Johns <ccj@acm.org> (diff) | |
download | rtems-e23afc3638a79daa7550f5c5a8a20c976db89318.tar.bz2 |
2000-11-28 Sergei Organov <osv@javad.ru>
* libc/getcwd.c: Ensure _closedir(dir) is called even on
error exit from the routine.
-rw-r--r-- | c/src/exec/libcsupport/src/getcwd.c | 5 | ||||
-rw-r--r-- | c/src/lib/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libc/getcwd.c | 5 | ||||
-rw-r--r-- | cpukit/libcsupport/src/getcwd.c | 5 |
4 files changed, 17 insertions, 3 deletions
diff --git a/c/src/exec/libcsupport/src/getcwd.c b/c/src/exec/libcsupport/src/getcwd.c index 26b564a760..18189d3e04 100644 --- a/c/src/exec/libcsupport/src/getcwd.c +++ b/c/src/exec/libcsupport/src/getcwd.c @@ -74,7 +74,7 @@ getcwd (pt, size) size_t size; { register struct dirent *dp; - register DIR *dir; + register DIR *dir = 0; register dev_t dev; register ino_t ino; register int first; @@ -254,6 +254,7 @@ getcwd (pt, size) bpt -= strlen (dp->d_name); bcopy (dp->d_name, bpt, strlen (dp->d_name)); (void) _closedir (dir); + dir = 0; /* Truncate any file name. */ *bup = '\0'; @@ -271,6 +272,8 @@ notfound: /* FALLTHROUGH */ err: + if(dir) + (void) _closedir (dir); if (ptsize) free (pt); free (up); diff --git a/c/src/lib/ChangeLog b/c/src/lib/ChangeLog index 7c346bfdf7..03e05984b1 100644 --- a/c/src/lib/ChangeLog +++ b/c/src/lib/ChangeLog @@ -1,4 +1,9 @@ +2000-11-28 Sergei Organov <osv@javad.ru> + + * libc/getcwd.c: Ensure _closedir(dir) is called even on + error exit from the routine. + 2000-11-25 Antti P Miettinen <antti.p.miettinen@nokia.com> * libc/termios.c, libc/termiostypes.h: Task driver driver model diff --git a/c/src/lib/libc/getcwd.c b/c/src/lib/libc/getcwd.c index 26b564a760..18189d3e04 100644 --- a/c/src/lib/libc/getcwd.c +++ b/c/src/lib/libc/getcwd.c @@ -74,7 +74,7 @@ getcwd (pt, size) size_t size; { register struct dirent *dp; - register DIR *dir; + register DIR *dir = 0; register dev_t dev; register ino_t ino; register int first; @@ -254,6 +254,7 @@ getcwd (pt, size) bpt -= strlen (dp->d_name); bcopy (dp->d_name, bpt, strlen (dp->d_name)); (void) _closedir (dir); + dir = 0; /* Truncate any file name. */ *bup = '\0'; @@ -271,6 +272,8 @@ notfound: /* FALLTHROUGH */ err: + if(dir) + (void) _closedir (dir); if (ptsize) free (pt); free (up); diff --git a/cpukit/libcsupport/src/getcwd.c b/cpukit/libcsupport/src/getcwd.c index 26b564a760..18189d3e04 100644 --- a/cpukit/libcsupport/src/getcwd.c +++ b/cpukit/libcsupport/src/getcwd.c @@ -74,7 +74,7 @@ getcwd (pt, size) size_t size; { register struct dirent *dp; - register DIR *dir; + register DIR *dir = 0; register dev_t dev; register ino_t ino; register int first; @@ -254,6 +254,7 @@ getcwd (pt, size) bpt -= strlen (dp->d_name); bcopy (dp->d_name, bpt, strlen (dp->d_name)); (void) _closedir (dir); + dir = 0; /* Truncate any file name. */ *bup = '\0'; @@ -271,6 +272,8 @@ notfound: /* FALLTHROUGH */ err: + if(dir) + (void) _closedir (dir); if (ptsize) free (pt); free (up); |