diff --git a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H index d2f17d0951..ee7ea6a49b 100644 --- a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H +++ b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H @@ -28,7 +28,8 @@ Class Foam::HashPtrTable Description - A HashTable of pointers to objects of type \. + A HashTable of pointers to objects of type \, + with deallocation management of the pointers. SourceFiles HashPtrTable.C diff --git a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H index b0d04f0197..08f40bd2c7 100644 --- a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H +++ b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H @@ -144,7 +144,16 @@ inline bool Foam::HashPtrTable::set T* ptr ) { - return this->parent_type::set(key, ptr); + const T* old = this->get(key); + + const bool ok = this->parent_type::set(key, ptr); + + if (ok && old != ptr) + { + delete const_cast(old); + } + + return ok; }