Author: sagamusix
Date: Sun Apr 28 18:24:28 2024
New Revision: 20675
URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20675
Log:
[Imp] DMF: Avoid spending a lot of time on reading non-existing pattern data.
Modified:
trunk/OpenMPT/soundlib/Load_dmf.cpp
Modified: trunk/OpenMPT/soundlib/Load_dmf.cpp
==============================================================================
--- trunk/OpenMPT/soundlib/Load_dmf.cpp Sun Apr 28 18:02:38 2024 (r20674)
+++ trunk/OpenMPT/soundlib/Load_dmf.cpp Sun Apr 28 18:24:28 2024 (r20675)
@@ -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)
@@ -971,6 +971,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);
}
|