pcsx2: use int instead of uint on file reader

Fix a crash when offset was negative. Offet becomes bigger than my input file.
This commit is contained in:
Gregory Hainaut 2014-07-20 23:00:18 +02:00
parent 1d5b250b58
commit 9e774eb41c
3 changed files with 6 additions and 6 deletions

View File

@ -25,11 +25,11 @@
class AsyncFileReader class AsyncFileReader
{ {
protected: protected:
AsyncFileReader(void) {m_dataoffset=0;} AsyncFileReader() : m_dataoffset(0) {}
wxString m_filename; wxString m_filename;
uint m_dataoffset; int m_dataoffset;
uint m_blocksize; uint m_blocksize;
public: public:
@ -48,7 +48,7 @@ public:
virtual uint GetBlockCount(void) const=0; virtual uint GetBlockCount(void) const=0;
virtual void SetBlockSize(uint bytes) {} virtual void SetBlockSize(uint bytes) {}
virtual void SetDataOffset(uint bytes) {} virtual void SetDataOffset(int bytes) {}
uint GetBlockSize() const { return m_blocksize; } uint GetBlockSize() const { return m_blocksize; }
@ -92,7 +92,7 @@ public:
virtual uint GetBlockCount(void) const; virtual uint GetBlockCount(void) const;
virtual void SetBlockSize(uint bytes) { m_blocksize = bytes; } virtual void SetBlockSize(uint bytes) { m_blocksize = bytes; }
virtual void SetDataOffset(uint bytes) { m_dataoffset = bytes; } virtual void SetDataOffset(int bytes) { m_dataoffset = bytes; }
}; };
// Factory - creates an AsyncFileReader derived instance which can read a compressed file // Factory - creates an AsyncFileReader derived instance which can read a compressed file

View File

@ -225,7 +225,7 @@ public:
}; };
virtual void SetBlockSize(uint bytes) { m_blocksize = bytes; } virtual void SetBlockSize(uint bytes) { m_blocksize = bytes; }
virtual void SetDataOffset(uint bytes) { m_dataoffset = bytes; } virtual void SetDataOffset(int bytes) { m_dataoffset = bytes; }
private: private:
class Czstate { class Czstate {
public: public:

View File

@ -49,7 +49,7 @@ int FlatFileReader::ReadSync(void* pBuffer, uint sector, uint count)
void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count) void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count)
{ {
u64 offset; u64 offset;
offset = sector * (u64)m_blocksize + m_dataoffset; offset = sector * (s64)m_blocksize + m_dataoffset;
u32 bytesToRead = count * m_blocksize; u32 bytesToRead = count * m_blocksize;