diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.C b/src/OpenFOAM/db/objectRegistry/objectRegistry.C index 9d01de9d90..452ad35ac6 100644 --- a/src/OpenFOAM/db/objectRegistry/objectRegistry.C +++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.C @@ -82,15 +82,21 @@ Foam::objectRegistry::objectRegistry Foam::objectRegistry::~objectRegistry() { + List 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& 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_; }