Fix pldm crashes

This commit attempts to fix three PLDM crashes
1. Capturing handler using a reference in dbus match handling
  lambda function.

dbus matches are aync,so by the time we get a dbus match we would
have exited the function in which the dbus match lambda is defined
so the handler would be nullptr , and dereferencing them would lead
to a segmentation fault.

2. We cannot be deleting elements of a container while iterating over
  the same container.

Reference : https://en.wikipedia.org/wiki/Erase%E2%80%93remove_idiom

Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com>
Change-Id: I54cb03ccf61c4fa50fbf7fb34f7b014d0247ea7b
diff --git a/host-bmc/host_pdr_handler.cpp b/host-bmc/host_pdr_handler.cpp
index 63512a3..f23407b 100644
--- a/host-bmc/host_pdr_handler.cpp
+++ b/host-bmc/host_pdr_handler.cpp
@@ -88,14 +88,10 @@
                 if (propVal == "xyz.openbmc_project.State.Host.HostState.Off")
                 {
                     // Delete all the remote terminus information
-                    for (const auto& terminusInfo : this->tlPDRInfo)
-                    {
-                        if (terminusInfo.first != TERMINUS_HANDLE)
-                        {
-                            this->tlPDRInfo.erase(terminusInfo.first);
-                        }
-                    }
-
+                    std::erase_if(tlPDRInfo, [](const auto& item) {
+                        auto const& [key, value] = item;
+                        return key != TERMINUS_HANDLE;
+                    });
                     pldm_pdr_remove_remote_pdrs(repo);
                     pldm_entity_association_tree_destroy_root(entityTree);
                     pldm_entity_association_tree_copy_root(bmcEntityTree,