* 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;
|
||||
|
||||
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;
|
||||
TRACE((" skip start %p, %u bytes\n", sBufferStart, freed));
|
||||
|
||||
@@ -79,7 +81,8 @@ make_space(size_t needed)
|
||||
sBufferStart = sBufferEnd;
|
||||
|
||||
sEntries--;
|
||||
removed->~TraceEntry();
|
||||
if (!(removed->flags & BUFFER_ENTRY))
|
||||
((TraceEntry*)removed)->~TraceEntry();
|
||||
|
||||
if (needed <= freed)
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user