После нормального получения хэша нескольких файлов обломался на файле нулевой длины и соорудил тест.
std::string emptyname = "zero.cpp"; // Тестовый файл нулевой длины
unsigned char emptyhash[MD5_DIGEST_LENGTH];
boost::iostreams::mapped_file_source emptymap;
emptymap.open(emptyname);
if (emptymap.is_open()) {
MD5( (unsigned char*) emptymap.data(), emptymap.size(), emptyhash );
emptymap.close();
}
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::exception> >'
what(): std::exception
Aborted
Гугл дал подтверждение только в одном электрописьме, которое ничего не прояснило.