From: <sv...@op...> - 2024-04-28 16:25:37
|
Author: sagamusix Date: Sun Apr 28 18:25:23 2024 New Revision: 20677 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20677 Log: Merged revision(s) 20675 from trunk/OpenMPT: [Imp] DMF: Avoid spending a lot of time on reading non-existing pattern data. ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/Load_dmf.cpp Modified: branches/OpenMPT-1.30/soundlib/Load_dmf.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/Load_dmf.cpp Sun Apr 28 18:25:09 2024 (r20676) +++ branches/OpenMPT-1.30/soundlib/Load_dmf.cpp Sun Apr 28 18:25:23 2024 (r20677) @@ -346,7 +346,7 @@ // Counters for channel packing (including global track) std::vector<uint8> channelCounter(numChannels + 1, 0); - for(ROWINDEX row = 0; row < numRows; row++) + for(ROWINDEX row = 0; row < numRows && file.CanRead(1); row++) { // Global track info counter reached 0 => read global track data if(channelCounter[0] == 0) @@ -973,6 +973,8 @@ const uint8 headerSize = fileHeader.version < 3 ? 9 : 8; chunk.Skip(headerSize - sizeof(uint32le)); const uint32 patLength = chunk.ReadUint32LE(); + if(!chunk.CanRead(patLength)) + return false; chunk.SkipBack(headerSize); patternChunk = chunk.ReadChunk(headerSize + patLength); } |