mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Core: Isolate Ref forward declare logic
This commit is contained in:
parent
2303ce843a
commit
d9ef361d12
2 changed files with 9 additions and 5 deletions
|
|
@ -180,10 +180,15 @@ public:
|
|||
// do a lot of referencing on references and stuff
|
||||
// mutexes will avoid more crashes?
|
||||
|
||||
if (reference && reference->unreference()) {
|
||||
memdelete(reference);
|
||||
if (reference) {
|
||||
// NOTE: `reinterpret_cast` is "safe" here because we know `T` has simple linear
|
||||
// inheritance to `RefCounted`. This guarantees that `T * == `RefCounted *`, which
|
||||
// allows us to declare `Ref<T>` with forward declared `T` types.
|
||||
if (reinterpret_cast<RefCounted *>(reference)->unreference()) {
|
||||
memdelete(reinterpret_cast<RefCounted *>(reference));
|
||||
}
|
||||
reference = nullptr;
|
||||
}
|
||||
reference = nullptr;
|
||||
}
|
||||
|
||||
template <typename... VarArgs>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue