Branimir Karadžić 9 anni fa
parent
commit
64525460d7
2 ha cambiato i file con 24 aggiunte e 1 eliminazioni
  1. 23 1
      include/bx/crtimpl.h
  2. 1 0
      include/bx/readerwriter.h

+ 23 - 1
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;
 			}
 

+ 1 - 0
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
 {