From bcfcbb90a3f8233c50a2c4f286b6999710b3d26c Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 5 Oct 2017 15:32:57 +0200 Subject: [PATCH] fix data forks in MacBinary --- ResourceFiles/ResourceFile.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ResourceFiles/ResourceFile.cc b/ResourceFiles/ResourceFile.cc index fb86aef9f4..4ce0dd1032 100644 --- a/ResourceFiles/ResourceFile.cc +++ b/ResourceFiles/ResourceFile.cc @@ -70,7 +70,9 @@ static void writeMacBinary(std::ostream& out, std::string filename, out.seekp(128); out << data; std::streampos dataend = out.tellp(); - std::streampos rsrcstart = ((int)dataend + 0x7F) & ~0x7F; + while((int)out.tellp() % 128) + byte(out,0); + std::streampos rsrcstart = out.tellp(); //((int)dataend + 0x7F) & ~0x7F; rsrc.writeFork(out); std::streampos rsrcend = out.tellp(); @@ -351,9 +353,11 @@ bool ResourceFile::read() unsigned short crc = CalculateCRC(0,header,124); if(word(in) != crc) return false; + in.seekg(128); std::vector buf(datasize); in.read(buf.data(), datasize); data = std::string(buf.begin(), buf.end()); + datasize = ((int)datasize + 0x7F) & ~0x7F; in.seekg(128 + datasize); resources = Resources(in); }