From 9801b4b31b3afdcd41d1e9ecf22daca1d9ed2bfc Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 6 May 2011 16:07:27 +0000 Subject: [PATCH] Fix an NXFFS memory leak git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3570 42af7a65-404d-4744-a932-0658087f49c3 --- fs/nxffs/nxffs_unlink.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/fs/nxffs/nxffs_unlink.c b/fs/nxffs/nxffs_unlink.c index f75d98f28c..f2295a966c 100644 --- a/fs/nxffs/nxffs_unlink.c +++ b/fs/nxffs/nxffs_unlink.c @@ -103,7 +103,8 @@ int nxffs_rminode(FAR struct nxffs_volume_s *volume, FAR const char *name) /* We can't remove the inode if it is open */ fdbg("Inode '%s' is open\n", name); - return -EBUSY; + ret = -EBUSY; + goto errout; } /* Find the NXFFS inode */ @@ -112,7 +113,7 @@ int nxffs_rminode(FAR struct nxffs_volume_s *volume, FAR const char *name) if (ret < 0) { fdbg("Inode '%s' not found\n", name); - return ret; + goto errout; } /* Set the position to the FLASH offset of the file header (nxffs_findinode @@ -127,7 +128,7 @@ int nxffs_rminode(FAR struct nxffs_volume_s *volume, FAR const char *name) if (ret < 0) { fdbg("Failed to read data into cache: %d\n", ret); - return ret; + goto errout_with_entry; } /* Change the file status... it is no longer valid */ @@ -141,10 +142,12 @@ int nxffs_rminode(FAR struct nxffs_volume_s *volume, FAR const char *name) if (ret < 0) { fdbg("Failed to read data into cache: %d\n", ret); - return ret; } - return OK; +errout_with_entry: + nxffs_freeentry(&entry); +errout: + return ret; } /****************************************************************************