diff --git a/include/bx/crtimpl.h b/include/bx/crtimpl.h index 116b781..dff0120 100644 --- a/include/bx/crtimpl.h +++ b/include/bx/crtimpl.h @@ -143,7 +143,15 @@ namespace bx int32_t size = (int32_t)fread(_data, 1, _size, m_file); if (size != _size) { - BX_ERROR_SET(_err, BX_ERROR_READERWRITER_READ, "CrtFileReader: read failed."); + if (0 != feof(m_file) ) + { + BX_ERROR_SET(_err, BX_ERROR_READERWRITER_EOF, "CrtFileWriter: EOF."); + } + else if (0 != ferror(m_file) ) + { + BX_ERROR_SET(_err, BX_ERROR_READERWRITER_READ, "CrtFileWriter: read error."); + } + return size >= 0 ? size : 0; } @@ -257,6 +265,15 @@ namespace bx int32_t size = (int32_t)fread(_data, 1, _size, m_file); if (size != _size) { + if (0 != feof(m_file) ) + { + BX_ERROR_SET(_err, BX_ERROR_READERWRITER_EOF, "CrtFileWriter: EOF."); + } + else if (0 != ferror(m_file) ) + { + BX_ERROR_SET(_err, BX_ERROR_READERWRITER_READ, "CrtFileWriter: read error."); + } + return size >= 0 ? size : 0; } @@ -308,6 +325,11 @@ namespace bx int32_t size = (int32_t)fwrite(_data, 1, _size, m_file); if (size != _size) { + if (0 != ferror(m_file) ) + { + BX_ERROR_SET(_err, BX_ERROR_READERWRITER_WRITE, "CrtFileWriter: write error."); + } + return size >= 0 ? size : 0; } diff --git a/include/bx/readerwriter.h b/include/bx/readerwriter.h index 058f664..ee6897b 100644 --- a/include/bx/readerwriter.h +++ b/include/bx/readerwriter.h @@ -19,6 +19,7 @@ BX_ERROR_RESULT(BX_ERROR_READERWRITER_OPEN, BX_MAKEFOURCC('R', 'W', 0, 1) ); BX_ERROR_RESULT(BX_ERROR_READERWRITER_READ, BX_MAKEFOURCC('R', 'W', 0, 2) ); BX_ERROR_RESULT(BX_ERROR_READERWRITER_WRITE, BX_MAKEFOURCC('R', 'W', 0, 3) ); +BX_ERROR_RESULT(BX_ERROR_READERWRITER_EOF, BX_MAKEFOURCC('R', 'W', 0, 4) ); namespace bx {