summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_creat.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_creat.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_creat.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_creat.c b/cpukit/libfs/src/imfs/imfs_creat.c
index 830480b83e..38c8385f43 100644
--- a/cpukit/libfs/src/imfs/imfs_creat.c
+++ b/cpukit/libfs/src/imfs/imfs_creat.c
@@ -32,6 +32,7 @@ IMFS_jnode_t *IMFS_allocate_node(
)
{
IMFS_jnode_t *node;
+ IMFS_jnode_t *initialized_node;
struct timeval tv;
if ( namelen > IMFS_NAME_MAX ) {
@@ -82,7 +83,12 @@ IMFS_jnode_t *IMFS_allocate_node(
node->stat_ctime = (time_t) tv.tv_sec;
node->st_ino = ++fs_info->ino_count;
- return (*node->control->node_initialize)( node, info );
+ initialized_node = (*node->control->node_initialize)( node, info );
+ if ( initialized_node == NULL ) {
+ free( node );
+ }
+
+ return initialized_node;
}
IMFS_jnode_t *IMFS_create_node_with_control(