'heap-use-after-free' error when uninitializing isolator

I found an error path in the test simulator where the Flyweight objects
are deleted before the uninitialize function is called. The default
Flyweight destructor seemed to delete all the shared pointers in
iv_index, but not actually clear out iv_index. So when the uninitialize
function called Flyweight.clear(), it tried to delete data that was
already removed from the heap. The solution was to call clear() from the
Flyweight destructor to ensure everything is deleted properly.

Change-Id: I485ce08570af7e59d9ec43cb054bce77b6866348
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
diff --git a/src/util/hei_bit_string.cpp b/src/util/hei_bit_string.cpp
index 066cde9..5313d7a 100644
--- a/src/util/hei_bit_string.cpp
+++ b/src/util/hei_bit_string.cpp
@@ -10,9 +10,9 @@
 namespace libhei
 {
 
-//##############################################################################
-//                             BitString class
-//##############################################################################
+// ##############################################################################
+//                              BitString class
+// ##############################################################################
 
 // number of bits in a uint64_t
 const uint64_t BitString::UINT64_BIT_LEN = sizeof(uint64_t) * 8;
@@ -425,9 +425,9 @@
     return (iv_bufAddr + ((i_absPos + iv_offset) / UINT8_BIT_LEN));
 }
 
-//##############################################################################
-//                          BitStringBuffer class
-//##############################################################################
+// ##############################################################################
+//                           BitStringBuffer class
+// ##############################################################################
 
 BitStringBuffer::BitStringBuffer(uint64_t i_bitLen) :
     BitString(i_bitLen, nullptr)
diff --git a/src/util/hei_bit_string.hpp b/src/util/hei_bit_string.hpp
index 5a1ad0f..2cfc7e3 100644
--- a/src/util/hei_bit_string.hpp
+++ b/src/util/hei_bit_string.hpp
@@ -7,9 +7,9 @@
 
 class BitStringBuffer;
 
-//##############################################################################
-//                             BitString class
-//##############################################################################
+// ##############################################################################
+//                              BitString class
+// ##############################################################################
 
 /**
  * A BitString is general purpose class providing the ability to manipulate
@@ -420,9 +420,9 @@
     uint64_t iv_offset;  ///< Start position offset
 };
 
-//##############################################################################
-//                          BitStringBuffer class
-//##############################################################################
+// ##############################################################################
+//                           BitStringBuffer class
+// ##############################################################################
 
 /** A BitStringBuffer is a BitString that maintains its own buffer in memory. It
  *  guarantees that sufficient memory is allocated and deallocated in the
diff --git a/src/util/hei_flyweight.hpp b/src/util/hei_flyweight.hpp
index 6228759..a81fe30 100644
--- a/src/util/hei_flyweight.hpp
+++ b/src/util/hei_flyweight.hpp
@@ -18,7 +18,10 @@
     Flyweight() = default;
 
     /** @brief Destructor. */
-    ~Flyweight() = default;
+    ~Flyweight()
+    {
+        clear();
+    }
 
     /** @brief Default copy constructor. */
     Flyweight(const Flyweight&) = delete;