⛏️ index : haiku.git

author Augustin Cavalier <waddlesplash@gmail.com> 2025-11-19 16:20:39.0 -05:00:00
committer Augustin Cavalier <waddlesplash@gmail.com> 2025-11-19 16:20:39.0 -05:00:00
commit
d39ce117e02d3d8aac966b1a46bd955a2b59c069 [patch]
tree
43792d0d6c060c48fb09d58ac629856cecf8d849
parent
e7275c4d6481dd1d330873a4e684715acee60d9e
download
d39ce117e02d3d8aac966b1a46bd955a2b59c069.tar.gz

app_server: ServerMemoryAllocator takes the original area as the key.

Should fix memory leaks caused by fe8f88cff41e.

Diff

 src/servers/app/ClientMemoryAllocator.cpp | 4 ++++
 src/servers/app/ClientMemoryAllocator.h   | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/servers/app/ClientMemoryAllocator.cpp b/src/servers/app/ClientMemoryAllocator.cpp
index d91fee3..ffe77c5 100644
--- a/src/servers/app/ClientMemoryAllocator.cpp
+++ b/src/servers/app/ClientMemoryAllocator.cpp
@@ -371,6 +371,7 @@

ClonedAreaMemory::ClonedAreaMemory()
	:
	fArea(-1),
	fClonedArea(-1),
	fOffset(0),
	fBase(NULL)
@@ -381,7 +382,7 @@
ClonedAreaMemory::~ClonedAreaMemory()
{
	BAutolock locker(sLocker);
	sClonedAreaMemoryAllocator.RemoveArea(fClonedArea);
	sClonedAreaMemoryAllocator.RemoveArea(fArea);
}


@@ -392,6 +393,7 @@
	if (sClonedAreaMemoryAllocator.AddArea(area, fClonedArea, fBase, 0, false) != B_OK)
		return NULL;

	fArea = area;
	fOffset = offset;
	return Address();
}
diff --git a/src/servers/app/ClientMemoryAllocator.h b/src/servers/app/ClientMemoryAllocator.h
index 7541fc0..0f4a8ec 100644
--- a/src/servers/app/ClientMemoryAllocator.h
+++ b/src/servers/app/ClientMemoryAllocator.h
@@ -101,6 +101,7 @@
	virtual uint32				AreaOffset();

private:
			area_id		fArea;
			area_id		fClonedArea;
			uint32		fOffset;
			uint8*		fBase;