Blob Blame History Raw
Index: /ps/trunk/source/lib/allocators/headerless.cpp
===================================================================
--- /ps/trunk/source/lib/allocators/headerless.cpp	(revision 15333)
+++ /ps/trunk/source/lib/allocators/headerless.cpp	(revision 15334)
@@ -55,10 +55,12 @@
 	}
 
-	FreedBlock(uintptr_t id, size_t size)
-		:  m_magic(s_magic), m_size(size), m_id(id)
-	{
-	}
-
-	~FreedBlock()
+	void Setup(uintptr_t id, size_t size)
+	{
+		m_magic = s_magic;
+		m_size = size;
+		m_id = id;
+	}
+
+	void Reset()
 	{
 		// clear all fields to prevent accidental reuse
@@ -411,6 +413,7 @@
 	FreedBlock* WriteTags(u8* p, size_t size)
 	{
-		FreedBlock* freedBlock = new(p) FreedBlock(s_headerId, size);
-		(void)new(Footer(freedBlock)) FreedBlock(s_footerId, size);
+		FreedBlock* freedBlock = (FreedBlock*)p;
+		freedBlock->Setup(s_headerId, size);
+		Footer(freedBlock)->Setup(s_footerId, size);
 
 		m_freeBlocks++;
@@ -431,6 +434,6 @@
 
 		FreedBlock* footer = Footer(freedBlock);
-		freedBlock->~FreedBlock();
-		footer->~FreedBlock();
+		freedBlock->Reset();
+		footer->Reset();
 	}