From 7cc9a52df82fbe6ac7caee4b3e409b3d362b886d Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 2 Aug 2008 20:51:59 +0000 Subject: [PATCH] IORequests leaked their IOBuffers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26742 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/device_manager/io_requests.cpp | 8 ++++++++ src/system/kernel/device_manager/io_requests.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/system/kernel/device_manager/io_requests.cpp b/src/system/kernel/device_manager/io_requests.cpp index 60b717bad4..9e574cfe42 100644 --- a/src/system/kernel/device_manager/io_requests.cpp +++ b/src/system/kernel/device_manager/io_requests.cpp @@ -65,6 +65,13 @@ IOBuffer::Create(size_t count) } +void +IOBuffer::Delete() +{ + free(this); +} + + void IOBuffer::SetVecs(size_t firstVecOffset, const iovec* vecs, uint32 count, size_t length, uint32 flags) @@ -508,6 +515,7 @@ IORequest::~IORequest() { mutex_lock(&fLock); DeleteSubRequests(); + fBuffer->Delete(); mutex_destroy(&fLock); } diff --git a/src/system/kernel/device_manager/io_requests.h b/src/system/kernel/device_manager/io_requests.h index 5a3b482a63..f80cfe104d 100644 --- a/src/system/kernel/device_manager/io_requests.h +++ b/src/system/kernel/device_manager/io_requests.h @@ -29,6 +29,7 @@ typedef struct IOOperation io_operation; class IOBuffer : public DoublyLinkedListLinkImpl { public: static IOBuffer* Create(size_t count); + void Delete(); bool IsVirtual() const { return !fPhysical; } bool IsPhysical() const { return fPhysical; } @@ -55,6 +56,7 @@ public: void UnlockMemory(team_id team, bool isWrite); private: + IOBuffer(); ~IOBuffer(); // not implemented void _UnlockMemory(team_id team, size_t count,