From: <sv...@op...> - 2024-04-09 17:08:44
|
Author: sagamusix Date: Tue Apr 9 19:08:36 2024 New Revision: 20544 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20544 Log: [Mod] Always only write out supported play behaviours. When manually saving from the UI, this was already ensured in CModDoc, but this way it is also done for autosaved files. Modified: trunk/OpenMPT/soundlib/Load_it.cpp Modified: trunk/OpenMPT/soundlib/Load_it.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp Tue Apr 9 19:02:30 2024 (r20543) +++ trunk/OpenMPT/soundlib/Load_it.cpp Tue Apr 9 19:08:36 2024 (r20544) @@ -2353,12 +2353,13 @@ // Playback compatibility flags { - uint8 bits[(kMaxPlayBehaviours + 7) / 8u]; - MemsetZero(bits); + const auto supportedBehaviours = GetSupportedPlaybackBehaviour(GetBestSaveFormat()); + std::array<uint8, (kMaxPlayBehaviours + 7) / 8u> bits; + bits.fill(0); size_t maxBit = 0; for(size_t i = 0; i < kMaxPlayBehaviours; i++) { - if(m_playBehaviour[i]) + if(m_playBehaviour[i] && supportedBehaviours[i]) { bits[i >> 3] |= 1 << (i & 0x07); maxBit = i + 8; @@ -2366,7 +2367,7 @@ } uint16 numBytes = static_cast<uint16>(maxBit / 8u); WRITEMODULARHEADER(MagicBE("MSF."), numBytes); - mpt::IO::WriteRaw(f, bits, numBytes); + mpt::IO::WriteRaw(f, bits.data(), numBytes); } if(!m_songArtist.empty() && specs.hasArtistName) |