Merge pull request #1700 from JosJuice/discio-clear-error

DiscIO: Clear error status when reading file
This commit is contained in:
skidau 2014-12-16 13:09:03 +11:00
commit 7b5b76caa4
3 changed files with 17 additions and 3 deletions

View File

@ -66,8 +66,11 @@ bool CISOFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr)
u64 const file_off = CISO_HEADER_SIZE + m_ciso_map[block] * (u64)m_block_size + data_offset;
if (!(m_file.Seek(file_off, SEEK_SET) && m_file.ReadArray(out_ptr, bytes_to_read)))
{
m_file.Clear();
return false;
}
}
else
{
std::fill_n(out_ptr, bytes_to_read, 0);

View File

@ -25,8 +25,15 @@ PlainFileReader* PlainFileReader::Create(const std::string& filename)
bool PlainFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr)
{
m_file.Seek(offset, SEEK_SET);
return m_file.ReadBytes(out_ptr, nbytes);
if (m_file.Seek(offset, SEEK_SET) && m_file.ReadBytes(out_ptr, nbytes))
{
return true;
}
else
{
m_file.Clear();
return false;
}
}
} // namespace

View File

@ -130,7 +130,11 @@ bool WbfsFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr)
File::IOFile& data_file = SeekToCluster(offset, &read_size);
read_size = (read_size > nbytes) ? nbytes : read_size;
data_file.ReadBytes(out_ptr, read_size);
if (!data_file.ReadBytes(out_ptr, read_size))
{
data_file.Clear();
return false;
}
out_ptr += read_size;
nbytes -= read_size;