| 564 | } |
| 565 | |
| 566 | void Internal::Dbg_ObjectPreCustomDelete(bf::System::Object* object) |
| 567 | { |
| 568 | BF_ASSERT((BFRTFLAGS & BfRtFlags_ObjectHasDebugFlags) != 0); |
| 569 | |
| 570 | if ((object->mObjectFlags & BfObjectFlag_AppendAlloc) != 0) |
| 571 | return; |
| 572 | |
| 573 | const char* errorPtr = NULL; |
| 574 | |
| 575 | if ((object->mObjectFlags & BfObjectFlag_StackAlloc) != 0) |
| 576 | errorPtr = "Attempting to delete stack-allocated object"; |
| 577 | if ((object->mObjectFlags & BfObjectFlag_Deleted) != 0) |
| 578 | errorPtr = "Attempting second delete on object"; |
| 579 | |
| 580 | if (errorPtr != NULL) |
| 581 | { |
| 582 | Beefy::String errorStr = errorPtr; |
| 583 | |
| 584 | Beefy::String typeName = object->GetTypeName(); |
| 585 | errorStr += "\x1"; |
| 586 | errorStr += StrFormat("LEAK\t0x%@\n", object); |
| 587 | errorStr += StrFormat(" (%s)0x%@\n", typeName.c_str(), object); |
| 588 | SETUP_ERROR(errorStr.c_str(), 2); |
| 589 | BF_DEBUG_BREAK(); |
| 590 | BFRTCALLBACKS.DebugMessageData_Fatal(); |
| 591 | } |
| 592 | } |
| 593 | |
| 594 | void* Internal::Dbg_RawAlloc(intptr size, DbgRawAllocData* rawAllocData) |
| 595 | { |
nothing calls this directly
no test coverage detected