Correct destructor for objects owned by registry.

This commit is contained in:
henry
2009-07-14 21:09:55 +01:00
parent 110b65add1
commit 2ded45bbaf
2 changed files with 14 additions and 8 deletions

View File

@ -82,15 +82,21 @@ Foam::objectRegistry::objectRegistry
Foam::objectRegistry::~objectRegistry()
{
List<regIOobject*> myObjects(size());
label nMyObjects = 0;
for (iterator iter = begin(); iter != end(); ++iter)
{
if (iter()->ownedByRegistry())
{
regIOobject* object = iter();
erase(iter);
delete object;
myObjects[nMyObjects++] = iter();
}
}
for (label i=0; i<nMyObjects; i++)
{
checkOut(*myObjects[i]);
}
}

View File

@ -32,7 +32,7 @@ inline bool Foam::regIOobject::ownedByRegistry() const
}
void Foam::regIOobject::store()
inline void Foam::regIOobject::store()
{
ownedByRegistry_ = true;
}
@ -74,18 +74,18 @@ inline Type& Foam::regIOobject::store(autoPtr<Type>& atPtr)
}
void Foam::regIOobject::release()
inline void Foam::regIOobject::release()
{
ownedByRegistry_ = false;
}
Foam::label Foam::regIOobject::eventNo() const
inline Foam::label Foam::regIOobject::eventNo() const
{
return eventNo_;
}
Foam::label& Foam::regIOobject::eventNo()
inline Foam::label& Foam::regIOobject::eventNo()
{
return eventNo_;
}