summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1997-08-22 19:16:47 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1997-08-22 19:16:47 +0000
commit78d87bd3f3ffbf31c8e3893e1054a3d47a9ee992 (patch)
treee6d27a69f8e962fc81d623d585755a49f9351a7e /c/src/lib/libc
parentRemoved redundant stanza. (diff)
downloadrtems-78d87bd3f3ffbf31c8e3893e1054a3d47a9ee992.tar.bz2
Fixed iop/memory leak bug reported by Dan Dickey.
Diffstat (limited to 'c/src/lib/libc')
-rw-r--r--c/src/lib/libc/libio.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/c/src/lib/libc/libio.c b/c/src/lib/libc/libio.c
index ec10184a10..d0ba197c61 100644
--- a/c/src/lib/libc/libio.c
+++ b/c/src/lib/libc/libio.c
@@ -324,6 +324,7 @@ __rtems_close(
rtems_driver_name_t *np;
rtems_libio_t *iop;
rtems_libio_open_close_args_t args;
+ int status;
if (rtems_file_descriptor_type(fd)) {
int (*fp)(int fd);
@@ -333,7 +334,9 @@ __rtems_close(
errno = EBADF;
return -1;
}
- return (*fp)(fd);
+ status = (*fp)(fd);
+ rtems_libio_free(iop);
+ return status;
}
iop = rtems_libio_iop(fd);
rtems_libio_check_fd(fd);
@@ -346,6 +349,8 @@ __rtems_close(
rc = rtems_io_close(np->major, np->minor, (void *) &args);
+ rtems_libio_free(iop);
+
if (rc != RTEMS_SUCCESSFUL)
return rtems_libio_errno(rc);
return 0;