diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H index c913892c26..95cb34932d 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H @@ -159,15 +159,9 @@ public: //- Assignment of all entries to the given value inline void operator=(const T&); - //- Assignment from List + //- Assignment from List. Also handles assignment from DynamicList. inline void operator=(const List&); - //- Assignment from DynamicList - inline void operator= - ( - const DynamicList& - ); - // IOstream operators diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H index d383480035..da6bd13067 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H @@ -85,8 +85,10 @@ inline void Foam::DynamicList::setSize } else { + label nextFree = List::size(); allocSize_ = s; List::setSize(allocSize_); + List::size() = nextFree; } } @@ -104,8 +106,10 @@ inline void Foam::DynamicList::setSize } else { + label nextFree = List::size(); allocSize_ = s; List::setSize(allocSize_, t); + List::size() = nextFree; } } @@ -165,7 +169,7 @@ Foam::DynamicList::transfer ) { allocSize_ = l.allocSize(); - List::transfer(l); // take over storage + List::transfer(l); // take over storage. Null l. } @@ -187,9 +191,9 @@ inline void Foam::DynamicList::append(const T& e) List::setSize(allocSize_); } - this->operator[](nextFree - 1) = e; - List::size() = nextFree; + + this->operator[](nextFree - 1) = e; } @@ -204,7 +208,13 @@ inline T Foam::DynamicList::remove() ) << "List is empty" << abort(FatalError); } - return List::operator[](--List::size()); + label nextFree = List::size()-1; + + const T& val = List::operator[](nextFree); + + List::size() = nextFree; + + return val; } @@ -258,18 +268,4 @@ inline void Foam::DynamicList::operator= } -template -inline void Foam::DynamicList::operator= -( - const DynamicList& l -) -{ - List::operator=(l); - // allocSize_ = l.allocSize(); // wrong - allocSize_ = List::size(); - // ^^^^ with this change, we could just use - // DynamicList::operator=(const List&) instead -} - - // ************************************************************************* // diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C index 86a0a618c1..5f16ad1335 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeTemplates.C @@ -241,7 +241,7 @@ void Foam::mapDistribute::distribute Pstream::nonBlocking, domain, reinterpret_cast(subField.begin()), - subField.size() + subField.size()*sizeof(T) ); } } @@ -262,7 +262,7 @@ void Foam::mapDistribute::distribute Pstream::nonBlocking, domain, reinterpret_cast(recvFields[domain].begin()), - recvFields[domain].size() + recvFields[domain].size()*sizeof(T) ); } } diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.C b/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.C index 8c21017269..6bcc2af56f 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.C +++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.C @@ -66,7 +66,6 @@ primitiveMesh::primitiveMesh() ppPtr_(NULL), cpPtr_(NULL), - allocSize_(0), labels_(0), cellCentresPtr_(NULL), @@ -109,7 +108,6 @@ primitiveMesh::primitiveMesh ppPtr_(NULL), cpPtr_(NULL), - allocSize_(0), labels_(0), cellCentresPtr_(NULL), diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H b/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H index 3868ba2b25..6f24944cbc 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H +++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H @@ -54,6 +54,7 @@ SourceFiles #ifndef primitiveMesh_H #define primitiveMesh_H +#include "DynamicList.H" #include "edgeList.H" #include "pointField.H" #include "SubField.H" @@ -157,10 +158,8 @@ class primitiveMesh // On-the-fly edge addresing storage - //- Temporary storage for addressing. allocSize is the real size - // of the labelList. - mutable label allocSize_; - mutable labelList labels_; + //- Temporary storage for addressing. + mutable DynamicList