fix copying RageFileDriverSlice doesn't init RageFileObj properly, causing desync between file pointers (RageFileObj thinks it's at 0, RageFileDriverSlice thinks it's at somewhere else)

This commit is contained in:
Glenn Maynard
2005-04-27 01:22:27 +00:00
parent e836c16466
commit 87a2186cc9
2 changed files with 13 additions and 4 deletions
+11 -3
View File
@@ -10,6 +10,16 @@ RageFileDriverSlice::RageFileDriverSlice( RageFileBasic *pFile, int iOffset, int
m_bFileOwned = false;
}
RageFileDriverSlice::RageFileDriverSlice( const RageFileDriverSlice &cpy ):
RageFileObj(cpy)
{
m_pFile = cpy.m_pFile->Copy();
m_iOffset = cpy.m_iOffset;
m_iFileSize = cpy.m_iFileSize;
m_iFilePos = cpy.m_iFilePos;
m_bFileOwned = true;
}
RageFileDriverSlice::~RageFileDriverSlice()
{
if( m_bFileOwned )
@@ -18,9 +28,7 @@ RageFileDriverSlice::~RageFileDriverSlice()
RageFileBasic *RageFileDriverSlice::Copy() const
{
RageFileDriverSlice *pRet = new RageFileDriverSlice( m_pFile->Copy(), m_iOffset, m_iFileSize );
pRet->m_bFileOwned = true;
pRet->m_iFilePos = m_iFilePos;
RageFileDriverSlice *pRet = new RageFileDriverSlice( *this );
return pRet;
}