From 7c57e58de955b4c2181d95d5db0861810b11be65 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 13 Sep 2008 19:26:04 +0000 Subject: [PATCH] * CID 874 and CID 875: Fix leaking the session object GetSession() allocates. * CID 876: Fix leaking the disc object in case it fails to initialize. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27496 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/partitioning_systems/session/session.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/partitioning_systems/session/session.cpp b/src/add-ons/kernel/partitioning_systems/session/session.cpp index b59ad9a17b..765259fcac 100644 --- a/src/add-ons/kernel/partitioning_systems/session/session.cpp +++ b/src/add-ons/kernel/partitioning_systems/session/session.cpp @@ -52,8 +52,10 @@ identify_partition(int fd, partition_data *partition, void **cookie) Disc *disc = new Disc(fd); if (disc && disc->InitCheck() == B_OK) { *cookie = static_cast(disc); - result = 0.7; - } + result = 0.7; + } + + delete disc; } PRINT(("returning %ld\n", int32(result * 10000))); return result; @@ -89,6 +91,7 @@ scan_partition(int fd, partition_data *partition, void *cookie) child->block_size = session->BlockSize(); child->flags |= session->Flags(); child->type = strdup(session->Type()); + delete session; if (!child->type) { error = B_NO_MEMORY; break; @@ -130,4 +133,3 @@ partition_module_info *modules[] = { &sSessionModule, NULL }; -