diff --git a/src/IOCallback.cpp b/src/IOCallback.cpp index 13ed6357..4fbaeeee 100644 --- a/src/IOCallback.cpp +++ b/src/IOCallback.cpp @@ -33,6 +33,7 @@ \author Moritz Bunkus */ +#include #include #include @@ -64,10 +65,17 @@ void IOCallback::readFully(void*Buffer,size_t Size) if(Buffer == nullptr) throw; - if(read(Buffer,Size) != Size) { - stringstream Msg; - Msg<<"EOF in readFully("<(Buffer); + uint32_t readSize = static_cast(std::min(std::numeric_limits::max(), Size)); + while (readSize != 0) { + if(read(readBuf,readSize) != readSize) { + stringstream Msg; + Msg<<"EOF in readFully("<(std::min(std::numeric_limits::max(), Size)); } }