Merge "slang: Improve handling of StringMapEntries."
diff --git a/slang.cpp b/slang.cpp
index da9b2eb..ec068d3 100644
--- a/slang.cpp
+++ b/slang.cpp
@@ -534,8 +534,9 @@
           llvm::StringMapEntry<ReflectedDefinitionTy>::Create(RDKey);
       ME->setValue(std::make_pair(ERT, CurInputFile));
 
-      if (!ReflectedDefinitions.insert(ME))
-        delete ME;
+      if (!ReflectedDefinitions.insert(ME)) {
+        slangAssert(false && "Type shouldn't be in map yet!");
+      }
 
       // Take the ownership of ERT such that it won't be freed in ~RSContext().
       ERT->keep();
diff --git a/slang_rs_context.cpp b/slang_rs_context.cpp
index 08d804b..2c4c6c6 100644
--- a/slang_rs_context.cpp
+++ b/slang_rs_context.cpp
@@ -259,7 +259,7 @@
   if (mExportTypes.insert(NewItem)) {
     return true;
   } else {
-    free(NewItem);
+    NewItem->Destroy(mExportTypes.getAllocator());
     return false;
   }
 }