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