Try replacing
ASSERT(lost_plus_found_directory_iter != all_directories.end());
with
if (lost_plus_found_directory_iter == all_directories.end())
{
--lost_plus_found_directory_iter;
std::cout << "WARNING: Cannot find lost+find directory?! Stuffing unlinkable blocks in " << lost_plus_found_directory_iter->first << " instead./n";
}