From: Gunnar Beutner Date: Fri, 1 Feb 2013 10:46:52 +0000 (+0100) Subject: Bugfix: Missing parent object causes assert in ReplicationComponent::Stop X-Git-Tag: v0.0.2~598 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e928b1fabf697aa9bc70094ac229c0d9c3457f2d;p=icinga2 Bugfix: Missing parent object causes assert in ReplicationComponent::Stop Fixes #3601 --- diff --git a/lib/base/dynamicobject.cpp b/lib/base/dynamicobject.cpp index 807c31626..dcec7be92 100644 --- a/lib/base/dynamicobject.cpp +++ b/lib/base/dynamicobject.cpp @@ -267,11 +267,13 @@ void DynamicObject::Register(void) { assert(Application::IsMainThread()); - DynamicObject::Ptr dobj = GetType()->GetObject(GetName()); + DynamicType::Ptr dtype = GetType(); + + DynamicObject::Ptr dobj = dtype->GetObject(GetName()); DynamicObject::Ptr self = GetSelf(); assert(!dobj || dobj == self); - GetType()->RegisterObject(self); + dtype->RegisterObject(self); OnRegistered(GetSelf()); @@ -287,10 +289,12 @@ void DynamicObject::Unregister(void) { assert(Application::IsMainThread()); - if (!GetType()->GetObject(GetName())) + DynamicType::Ptr dtype = GetType(); + + if (!dtype || !dtype->GetObject(GetName())) return; - GetType()->UnregisterObject(GetSelf()); + dtype->UnregisterObject(GetSelf()); OnUnregistered(GetSelf()); }