* Don't invoke the TraceEntry destructor for simple buffer entries,
since that's seriously unhealthy. * Added TODO that uninitialized entries must not be discarded. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23599 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -70,7 +70,9 @@ make_space(size_t needed)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
TraceEntry* removed = (TraceEntry*)sBufferStart;
|
// TODO: If the entry is not ENTRY_INITIALIZED yet, we must not
|
||||||
|
// discard it, or the owner might overwrite memory we're allocating.
|
||||||
|
trace_entry* removed = sBufferStart;
|
||||||
uint16 freed = sBufferStart->size;
|
uint16 freed = sBufferStart->size;
|
||||||
TRACE((" skip start %p, %u bytes\n", sBufferStart, freed));
|
TRACE((" skip start %p, %u bytes\n", sBufferStart, freed));
|
||||||
|
|
||||||
@@ -79,7 +81,8 @@ make_space(size_t needed)
|
|||||||
sBufferStart = sBufferEnd;
|
sBufferStart = sBufferEnd;
|
||||||
|
|
||||||
sEntries--;
|
sEntries--;
|
||||||
removed->~TraceEntry();
|
if (!(removed->flags & BUFFER_ENTRY))
|
||||||
|
((TraceEntry*)removed)->~TraceEntry();
|
||||||
|
|
||||||
if (needed <= freed)
|
if (needed <= freed)
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user