diff --git a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H
index 5c76321ab6354e74bb2eea845176cb4dbd60162b..733c11cd06754af1d40abc4b9f5220068eac32f6 100644
--- a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H
+++ b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTableI.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2018 OpenCFD Ltd.
+    Copyright (C) 2018-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -86,7 +86,19 @@ inline bool Foam::HashPtrTable<T, Key, Hash>::set
     T* ptr
 )
 {
-    return this->parent_type::set(key, ptr);
+    // Newer: const T* old = this->get(key);
+
+    iterator iter(this->find(key));
+    const T* old = (iter.good() ? iter.val() : nullptr);
+
+    const bool ok = this->parent_type::set(key, ptr);
+
+    if (ok && old != ptr)
+    {
+        delete const_cast<T*>(old);
+    }
+
+    return ok;
 }