mirror of
https://github.com/genodelabs/genode.git
synced 2025-03-11 06:54:18 +00:00
parent
f68be31fa3
commit
d1e0e460a1
@ -26,12 +26,16 @@ void Object_identity::invalidate()
|
|||||||
{
|
{
|
||||||
for (Object_identity_reference * oir = first(); oir; oir = first())
|
for (Object_identity_reference * oir = first(); oir; oir = first())
|
||||||
oir->invalidate();
|
oir->invalidate();
|
||||||
_object.remove(this);
|
|
||||||
|
if (_object) {
|
||||||
|
_object->remove(this);
|
||||||
|
_object = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Object_identity::Object_identity(Object & object)
|
Object_identity::Object_identity(Object & object)
|
||||||
: _object(object) { _object.insert(this); }
|
: _object(&object) { _object->insert(this); }
|
||||||
|
|
||||||
|
|
||||||
Object_identity::~Object_identity() { invalidate(); }
|
Object_identity::~Object_identity() { invalidate(); }
|
||||||
|
@ -83,7 +83,7 @@ class Kernel::Object_identity
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Object & _object;
|
Object * _object = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ class Kernel::Object_identity
|
|||||||
~Object_identity();
|
~Object_identity();
|
||||||
|
|
||||||
template <typename KOBJECT>
|
template <typename KOBJECT>
|
||||||
KOBJECT * object() { return dynamic_cast<KOBJECT*>(&_object); }
|
KOBJECT * object() { return dynamic_cast<KOBJECT*>(_object); }
|
||||||
|
|
||||||
void invalidate();
|
void invalidate();
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user