[ndnSIM] Fix circular dependency for shared_ptr<Face>
This patch not needed for NFD-0.5.0+
Change-Id: I6c20fe06cf41a7437579d8b5a5a9b8d51293a86e
diff --git a/daemon/fw/face-table.cpp b/daemon/fw/face-table.cpp
index b4bda23..6c50049 100644
--- a/daemon/fw/face-table.cpp
+++ b/daemon/fw/face-table.cpp
@@ -90,7 +90,14 @@
face->afterReceiveInterest.connect(bind(&Forwarder::startProcessInterest, &m_forwarder, ref(*face), _1));
face->afterReceiveData.connect(bind(&Forwarder::startProcessData, &m_forwarder, ref(*face), _1));
face->afterReceiveNack.connect(bind(&Forwarder::startProcessNack, &m_forwarder, ref(*face), _1));
- connectFaceClosedSignal(*face, bind(&FaceTable::remove, this, face));
+
+ std::weak_ptr<Face> weakFace = face;
+ connectFaceClosedSignal(*face, [this, weakFace] {
+ shared_ptr<Face> face = weakFace.lock();
+ if (face != nullptr) {
+ this->remove(face);
+ }
+ });
this->afterAdd(face);
}