diff --git a/Source/Core/DiscIO/Src/Blob.h b/Source/Core/DiscIO/Src/Blob.h index 6e8c80b1f7..556ba23402 100644 --- a/Source/Core/DiscIO/Src/Blob.h +++ b/Source/Core/DiscIO/Src/Blob.h @@ -40,6 +40,7 @@ public: virtual u64 GetRawSize() const = 0; virtual u64 GetDataSize() const = 0; + // NOT thread-safe - can't call this from multiple threads. virtual bool Read(u64 offset, u64 size, u8* out_ptr) = 0; protected: diff --git a/Source/Core/DiscIO/Src/CompressedBlob.cpp b/Source/Core/DiscIO/Src/CompressedBlob.cpp index 05973e8ab3..dcaa9da2b6 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.cpp +++ b/Source/Core/DiscIO/Src/CompressedBlob.cpp @@ -37,6 +37,7 @@ namespace DiscIO CompressedBlobReader::CompressedBlobReader(const char *filename) { + file_name = filename; file = fopen(filename, "rb"); fseek(file, 0, SEEK_END); file_size = ftell(file); @@ -118,8 +119,10 @@ void CompressedBlobReader::GetBlock(u64 block_num, u8 *out_ptr) // First, check hash. u32 block_hash = HashAdler32(source, comp_block_size); if (block_hash != hashes[block_num]) - PanicAlert("Hash of block %i is %08x instead of %08x. Your ISO is corrupt.", - block_num, block_hash, hashes[block_num]); + PanicAlert("Hash of block %i is %08x instead of %08x.\n" + "Your ISO, %s, is corrupt.", + block_num, block_hash, hashes[block_num], + file_name.c_str()); if (uncompressed) { diff --git a/Source/Core/DiscIO/Src/CompressedBlob.h b/Source/Core/DiscIO/Src/CompressedBlob.h index 1a63551043..cd96393039 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.h +++ b/Source/Core/DiscIO/Src/CompressedBlob.h @@ -29,6 +29,8 @@ #define COMPRESSED_BLOB_H_ #include +#include + #include "Blob.h" namespace DiscIO @@ -56,18 +58,6 @@ struct CompressedBlobHeader // 32 bytes class CompressedBlobReader : public SectorReader { -private: - CompressedBlobHeader header; - u64 *block_pointers; - u32 *hashes; - int data_offset; - FILE *file; - u64 file_size; - u8 *zlib_buffer; - int zlib_buffer_size; - - CompressedBlobReader(const char *filename); - public: static CompressedBlobReader* Create(const char *filename); ~CompressedBlobReader(); @@ -76,6 +66,18 @@ public: u64 GetRawSize() const { return file_size; } u64 GetBlockCompressedSize(u64 block_num) const; void GetBlock(u64 block_num, u8 *out_ptr); +private: + CompressedBlobReader(const char *filename); + + CompressedBlobHeader header; + u64 *block_pointers; + u32 *hashes; + int data_offset; + FILE *file; + u64 file_size; + u8 *zlib_buffer; + int zlib_buffer_size; + std::string file_name; }; } // namespace