From: <sag...@us...> - 2011-09-05 14:39:37
|
Revision: 1023 http://modplug.svn.sourceforge.net/modplug/?rev=1023&view=rev Author: saga-games Date: 2011-09-05 14:39:30 +0000 (Mon, 05 Sep 2011) Log Message: ----------- [Fix] IT/MPTM saver broke when merging SaveIT and SaveCompatIT (tx jmkz) [Mod] OpenMPT: Version is now 1.20.00.19 Modified Paths: -------------- trunk/OpenMPT/mptrack/version.h trunk/OpenMPT/soundlib/Load_it.cpp Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-09-05 01:07:40 UTC (rev 1022) +++ trunk/OpenMPT/mptrack/version.h 2011-09-05 14:39:30 UTC (rev 1023) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 00 -#define VER_MINORMINOR 18 +#define VER_MINORMINOR 19 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2011-09-05 01:07:40 UTC (rev 1022) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2011-09-05 14:39:30 UTC (rev 1023) @@ -1360,7 +1360,6 @@ ITSAMPLESTRUCT itss; vector<bool>smpcount(GetNumSamples(), false); DWORD dwPos = 0, dwHdrPos = 0, dwExtra = 0; - WORD patinfo[4]; FILE *f; @@ -1694,11 +1693,6 @@ { DWORD dwPatPos = dwPos; if (!Patterns[npat]) continue; - patpos[npat] = dwPos; - patinfo[0] = 0; - patinfo[1] = Patterns[npat].GetNumRows(); - patinfo[2] = 0; - patinfo[3] = 0; if(Patterns[npat].GetOverrideSignature()) bNeedsMptPatSave = true; @@ -1710,18 +1704,29 @@ continue; } + patpos[npat] = dwPos; + + // Write pattern header + WORD patinfo[4]; + patinfo[0] = 0; + patinfo[1] = LittleEndianW(Patterns[npat].GetNumRows()); + patinfo[2] = 0; + patinfo[3] = 0; + fwrite(patinfo, 8, 1, f); dwPos += 8; - vector<BYTE> chnmask(specs.channelsMax, 0xFF); - vector<MODCOMMAND> lastvalue(specs.channelsMax, MODCOMMAND::Empty()); - for (UINT row = 0; row<Patterns[npat].GetNumRows(); row++) + const CHANNELINDEX maxChannels = min(specs.channelsMax, GetNumChannels()); + vector<BYTE> chnmask(maxChannels, 0xFF); + vector<MODCOMMAND> lastvalue(maxChannels, MODCOMMAND::Empty()); + + for (ROWINDEX row = 0; row<Patterns[npat].GetNumRows(); row++) { UINT len = 0; BYTE buf[8 * MAX_BASECHANNELS]; const MODCOMMAND *m = Patterns[npat].GetRow(row); - for (UINT ch = 0; ch < specs.channelsMax; ch++, m++) + for (CHANNELINDEX ch = 0; ch < maxChannels; ch++, m++) { // Skip mptm-specific notes. if(m->IsPcNote()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |