diff --git a/daemon/table/cleanup.cpp b/daemon/table/cleanup.cpp
index 8317099..c31ccc4 100644
--- a/daemon/table/cleanup.cpp
+++ b/daemon/table/cleanup.cpp
@@ -30,7 +30,7 @@
 void
 cleanupOnFaceRemoval(NameTree& nt, Fib& fib, Pit& pit, const Face& face)
 {
-  std::multimap<size_t, weak_ptr<name_tree::Entry>> maybeEmptyNtes;
+  std::multimap<size_t, const name_tree::Entry*> maybeEmptyNtes;
 
   // visit FIB and PIT entries in one pass of NameTree enumeration
   for (const name_tree::Entry& nte : nt) {
@@ -43,19 +43,19 @@
       pit.deleteInOutRecords(pitEntry, face);
     }
 
-    if (nte.getFibEntry() == nullptr && !nte.hasPitEntries()) {
-      maybeEmptyNtes.emplace(nte.getName().size(), const_pointer_cast<name_tree::Entry>(nte.shared_from_this()));
+    if (!nte.hasTableEntries()) {
+      maybeEmptyNtes.emplace(nte.getName().size(), &nte);
     }
   }
 
   // try to erase longer names first, so that children are erased before parent is checked
   for (auto i = maybeEmptyNtes.rbegin(); i != maybeEmptyNtes.rend(); ++i) {
-    shared_ptr<name_tree::Entry> nte = i->second.lock();
-    // nte may have been erased when its last child is erased
-    if (nte != nullptr) {
-      nt.eraseIfEmpty(nte.get());
-    }
+    nt.eraseIfEmpty(const_cast<name_tree::Entry*>(i->second), false);
   }
+
+  BOOST_ASSERT(nt.size() == 0 ||
+               std::none_of(nt.begin(), nt.end(),
+                            [] (const name_tree::Entry& nte) { return nte.isEmpty(); }));
 }
 
 } // namespace nfd
diff --git a/daemon/table/name-tree.cpp b/daemon/table/name-tree.cpp
index b806cd4..adff4b3 100644
--- a/daemon/table/name-tree.cpp
+++ b/daemon/table/name-tree.cpp
@@ -118,7 +118,7 @@
 }
 
 size_t
-NameTree::eraseIfEmpty(Entry* entry)
+NameTree::eraseIfEmpty(Entry* entry, bool canEraseAncestors)
 {
   BOOST_ASSERT(entry != nullptr);
 
@@ -132,6 +132,10 @@
 
     m_ht.erase(getNode(*entry));
     ++nErased;
+
+    if (!canEraseAncestors) {
+      break;
+    }
   }
 
   if (nErased == 0) {
diff --git a/daemon/table/name-tree.hpp b/daemon/table/name-tree.hpp
index 9ddf0ff..8542873 100644
--- a/daemon/table/name-tree.hpp
+++ b/daemon/table/name-tree.hpp
@@ -108,15 +108,16 @@
 
   /** \brief delete the entry if it is empty
    *  \param entry a valid entry
+   *  \param canEraseAncestors whether ancestors should be deleted if they become empty
    *  \return number of deleted entries
    *  \sa Entry::isEmpty()
-   *  \post If the entry is empty, it's deleted.
-   *        Ancestors of the entry are also deleted if they become empty.
+   *  \post If the entry is empty, it's deleted. If canEraseAncestors is true,
+   *        ancestors of the entry are also deleted if they become empty.
    *  \note This function must be called after detaching a table entry from a name tree entry,
    *  \note Existing iterators, except those pointing to deleted entries, are unaffected.
    */
   size_t
-  eraseIfEmpty(Entry* entry);
+  eraseIfEmpty(Entry* entry, bool canEraseAncestors = true);
 
 public: // matching
   /** \brief exact match lookup
