If there is nothing to copy, return. This fixes an assert in stl since m_pFile->m_sBuf[m_iFilePos] is not dereferencable if m_iFilePos is the size of the file.

This commit is contained in:
Steve Checkoway
2008-07-21 10:34:43 +00:00
parent 8d266cf4a2
commit 9bca01da8e
+3 -2
View File
@@ -51,13 +51,14 @@ RageFileObjMem::~RageFileObjMem()
int RageFileObjMem::ReadInternal( void *buffer, size_t bytes )
{
m_pFile->m_Mutex.Lock();
LockMut(m_pFile->m_Mutex);
m_iFilePos = min( m_iFilePos, GetFileSize() );
bytes = min( bytes, (size_t) GetFileSize() - m_iFilePos );
if( bytes == 0 )
return 0;
memcpy( buffer, &m_pFile->m_sBuf[m_iFilePos], bytes );
m_iFilePos += bytes;
m_pFile->m_Mutex.Unlock();
return bytes;
}