* 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:
Ingo Weinhold
2008-01-18 02:04:04 +00:00
parent b516effeaa
commit 21c92a08d4
+5 -2
View File
@@ -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;