From: <sv...@op...> - 2024-08-09 17:40:07
|
Author: sagamusix Date: Fri Aug 9 19:39:56 2024 New Revision: 21374 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21374 Log: Merged revision(s) 21373 from trunk/OpenMPT: [Fix] MED: Fix pattern index explosion with multiple subsongs (fixes MED.Aria, https://www.un4seen.com/forum/?topic=15448.msg143464#msg143464). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_med.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_med.cpp Fri Aug 9 19:39:21 2024 (r21373) +++ branches/OpenMPT-1.31/soundlib/Load_med.cpp Fri Aug 9 19:39:56 2024 (r21374) @@ -1466,8 +1466,8 @@ order[from] = pat; } Patterns[pat].WriteEffect(EffectWriter(CMD_POSITIONJUMP, mpt::saturate_cast<ModCommand::PARAM>(to)).Row(Patterns[pat].GetNumRows() - 1).RetryPreviousRow()); - if(pat >= numPatterns) - numPatterns = pat + 1; + if(pat >= basePattern && (pat - basePattern) >= numPatterns) + numPatterns = pat - basePattern + 1; } if(numSongs > 1) @@ -1480,8 +1480,8 @@ Patterns[firstPat].WriteEffect(EffectWriter(CMD_CHANNELVOLUME, static_cast<ModCommand::PARAM>(ChnSettings[chn].nVolume)).Channel(chn).RetryNextRow()); Patterns[firstPat].WriteEffect(EffectWriter(CMD_PANNING8, mpt::saturate_cast<ModCommand::PARAM>(ChnSettings[chn].nPan)).Channel(chn).RetryNextRow()); } - if(firstPat >= numPatterns) - numPatterns = firstPat + 1; + if(firstPat >= basePattern && (firstPat - basePattern) >= numPatterns) + numPatterns = firstPat - basePattern + 1; } } |