From 230b9a69d3c77475de1a012055f99641f3884726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 20 Dec 2010 21:41:49 +0000 Subject: [PATCH] resource leaks CID 5711, 5712, 5713, 5714 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39902 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/ext2/Inode.cpp | 5 ++++- src/add-ons/kernel/file_systems/ext2/InodeJournal.cpp | 3 ++- src/add-ons/kernel/file_systems/ext2/Journal.cpp | 3 ++- src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/file_systems/ext2/Inode.cpp b/src/add-ons/kernel/file_systems/ext2/Inode.cpp index 9ef558c20f..5db0bb8e8e 100644 --- a/src/add-ons/kernel/file_systems/ext2/Inode.cpp +++ b/src/add-ons/kernel/file_systems/ext2/Inode.cpp @@ -643,6 +643,7 @@ Inode::Create(Transaction& transaction, Inode* parent, const char* name, status = inode->InitDirectory(transaction, parent); if (status != B_OK) { ERROR("Inode::Create(): InitDirectory() failed\n"); + delete inode; return status; } } @@ -670,8 +671,10 @@ Inode::Create(Transaction& transaction, Inode* parent, const char* name, TRACE("Inode::Create(): Saving inode\n"); status = inode->WriteBack(transaction); - if (status != B_OK) + if (status != B_OK) { + delete inode; return status; + } TRACE("Inode::Create(): Creating vnode\n"); diff --git a/src/add-ons/kernel/file_systems/ext2/InodeJournal.cpp b/src/add-ons/kernel/file_systems/ext2/InodeJournal.cpp index 8e7b76915f..cadc0f4190 100644 --- a/src/add-ons/kernel/file_systems/ext2/InodeJournal.cpp +++ b/src/add-ons/kernel/file_systems/ext2/InodeJournal.cpp @@ -62,7 +62,8 @@ InodeJournal::InodeJournal(Inode* inode) if (fInitStatus == B_OK) { fRevokeManager = revokeManager; fInitStatus = _LoadSuperBlock(); - } + } else + delete revokeManager; } } } diff --git a/src/add-ons/kernel/file_systems/ext2/Journal.cpp b/src/add-ons/kernel/file_systems/ext2/Journal.cpp index 4858a07c23..c95a713a76 100644 --- a/src/add-ons/kernel/file_systems/ext2/Journal.cpp +++ b/src/add-ons/kernel/file_systems/ext2/Journal.cpp @@ -118,7 +118,8 @@ Journal::Journal(Volume* fsVolume, Volume* jVolume) if (fInitStatus == B_OK) { fRevokeManager = revokeManager; fInitStatus = _LoadSuperBlock(); - } + } else + delete revokeManager; } } diff --git a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp index 8dff14128e..e4bebb1093 100644 --- a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp @@ -204,7 +204,7 @@ ext2_get_vnode(fs_volume* _volume, ino_t id, fs_vnode* _node, int* _type, return B_NO_MEMORY; status_t status = inode->InitCheck(); - if (status < B_OK) + if (status != B_OK) delete inode; if (status == B_OK) {