diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-10-17 17:57:42 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-10-17 17:57:42 +0000 |
commit | efb5450a87d50c53584d361c92d5928098233f58 (patch) | |
tree | 8068a8a16853a494ec4b565475d4d0f015872b2b /cpukit/libcsupport/src/open.c | |
parent | 2001-10-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff) | |
download | rtems-efb5450a87d50c53584d361c92d5928098233f58.tar.bz2 |
2001-10-17 Till Straumann <strauman@SLAC.Stanford.EDU>
* These changes were discussed and reviewed by many people but the
primary people were Jennifer Averett <jennifer@OARcorp.com>
and Eugeny Mints <jack@oktet.ru>.
* libc/utime.c: Add missing call to rtems_filesystem_freenode()
at verification that utime is supported by the filesystem.
* libc/link.c: Remove calls to freenode when the node was
not successfully allocated.
* libc/unmount.c: In the method file_systems_below_this_mountpoint()
added calls to correctly free fs_root_loc when a failure occurs.
* libc/open.c: Add freenode calls upon failure.
* libc/open.c, lib/libc/close.c: (PENDING -- NOT INCLUDED THIS TIMER)
Modifications the move the freenode from open() to close() (also part
of this patch) are pending further discussion.
Diffstat (limited to 'cpukit/libcsupport/src/open.c')
-rw-r--r-- | cpukit/libcsupport/src/open.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/cpukit/libcsupport/src/open.c b/cpukit/libcsupport/src/open.c index d1dbcb77c4..bfb4117e73 100644 --- a/cpukit/libcsupport/src/open.c +++ b/cpukit/libcsupport/src/open.c @@ -66,6 +66,7 @@ int open( rtems_libio_t *iop = 0; int status; rtems_filesystem_location_info_t loc; + rtems_filesystem_location_info_t *loc_to_free = NULL; int eval_flags; @@ -138,9 +139,12 @@ int open( } else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) { /* We were trying to create a file that already exists */ rc = EEXIST; + loc_to_free = &loc; goto done; } + loc_to_free = &loc; + /* * Fill in the file control block based on the loc structure * returned by successful path evaluation. @@ -178,6 +182,8 @@ done: if ( rc ) { if ( iop ) rtems_libio_free( iop ); + if ( loc_to_free ) + rtems_filesystem_freenode( loc_to_free ); set_errno_and_return_minus_one( rc ); } |