Index: libs/regex/src/fileiter.cpp =================================================================== --- libs/regex/src/fileiter.cpp (revision 56576) +++ libs/regex/src/fileiter.cpp (working copy) @@ -258,11 +258,23 @@ *p = 0; *(reinterpret_cast(*node)) = 1; } - std::fseek(hfile, (node - _first) * buf_size, SEEK_SET); - if(node == _last - 1) - std::fread(*node + sizeof(int), _size % buf_size, 1, hfile); + + std::size_t read_size = 0; + int read_pos = std::fseek(hfile, (node - _first) * buf_size, SEEK_SET); + + if(0 == read_pos && node == _last - 1) + read_size = std::fread(*node + sizeof(int), _size % buf_size, 1, hfile); else - std::fread(*node + sizeof(int), buf_size, 1, hfile); + read_size = std::fread(*node + sizeof(int), buf_size, 1, hfile); + +#ifndef BOOST_NO_EXCEPTIONS + if (std::ferror(hfile)) + { + throw std::runtime_error("Unable to read file."); + } +#else + BOOST_REGEX_NOEH_ASSERT(0 == std::ferror(hfile)); +#endif } else {