diff --git a/cpukit/libfs/ChangeLog b/cpukit/libfs/ChangeLog index 97ca7eb8b0..0bebaf2447 100644 --- a/cpukit/libfs/ChangeLog +++ b/cpukit/libfs/ChangeLog @@ -1,3 +1,9 @@ +2003-06-10 Phil Torre + + PR 411/filesystem + * src/imfs/imfs_unlink.c: Fix bug where renaming a memfile and + then unlinking it causes a memory leak. + 2003-03-25 Thomas Doerfler PR 367/filesystem diff --git a/cpukit/libfs/src/imfs/imfs_unlink.c b/cpukit/libfs/src/imfs/imfs_unlink.c index 9e0861b53a..af89045dc0 100644 --- a/cpukit/libfs/src/imfs/imfs_unlink.c +++ b/cpukit/libfs/src/imfs/imfs_unlink.c @@ -58,12 +58,16 @@ int IMFS_unlink( * to remove the node that is a link and the node itself. */ - node->info.hard_link.link_node->st_nlink --; - IMFS_update_ctime( node->info.hard_link.link_node ); - if ( node->info.hard_link.link_node->st_nlink < 1) { - result = (*the_link.handlers->rmnod_h)( &the_link ); - if ( result != 0 ) - return -1; + if ( node->info.hard_link.link_node->st_nlink == 1) + { + result = (*the_link.handlers->rmnod_h)( &the_link ); + if ( result != 0 ) + return -1; + } + else + { + node->info.hard_link.link_node->st_nlink --; + IMFS_update_ctime( node->info.hard_link.link_node ); } }