From: <sag...@us...> - 2012-05-13 20:04:20
|
Revision: 1268 http://modplug.svn.sourceforge.net/modplug/?rev=1268&view=rev Author: saga-games Date: 2012-05-13 20:04:12 +0000 (Sun, 13 May 2012) Log Message: ----------- [Fix] Pattern Editor: Moving channels through drag&drop didn't update the channel names properly. [Fix] Sample Editor: Shouldn't crash anymore when cleaning up Undo RAM (http://bugs.openmpt.org/view.php?id=232). [Fix] IT Loading: Loading IT files made with older versions of OpenMPT replaces SC0 with ^^ instead of v00 now. [Mod] OpenMPT: Version is now 1.20.01.02 Modified Paths: -------------- trunk/OpenMPT/mptrack/Undo.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/version.h trunk/OpenMPT/soundlib/Sndfile.cpp Modified: trunk/OpenMPT/mptrack/Undo.cpp =================================================================== --- trunk/OpenMPT/mptrack/Undo.cpp 2012-05-10 16:31:50 UTC (rev 1267) +++ trunk/OpenMPT/mptrack/Undo.cpp 2012-05-13 20:04:12 UTC (rev 1268) @@ -490,12 +490,12 @@ UINT nCapacity = GetUndoBufferCapacity(); while(nCapacity > CMainFrame::GetSettings().m_nSampleUndoMaxBuffer) { - for(SAMPLEINDEX nSmp = 1; nSmp <= UndoBuffer.size(); nSmp++) + for(SAMPLEINDEX smp = 1; smp <= UndoBuffer.size(); smp++) { - if(UndoBuffer[nSmp - 1][0].SamplePtr != nullptr) + if(UndoBuffer[smp - 1].size() != 0 && UndoBuffer[smp - 1][0].SamplePtr != nullptr) { - nCapacity -= (UndoBuffer[nSmp - 1][0].nChangeEnd - UndoBuffer[nSmp - 1][0].nChangeStart) * UndoBuffer[nSmp - 1][0].OldSample.GetBytesPerSample(); - DeleteUndoStep(nSmp, 0); + nCapacity -= (UndoBuffer[smp - 1][0].nChangeEnd - UndoBuffer[smp - 1][0].nChangeStart) * UndoBuffer[smp - 1][0].OldSample.GetBytesPerSample(); + DeleteUndoStep(smp, 0); } if(nCapacity <= CMainFrame::GetSettings().m_nSampleUndoMaxBuffer) return; } Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2012-05-10 16:31:50 UTC (rev 1267) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2012-05-13 20:04:12 UTC (rev 1268) @@ -1341,7 +1341,7 @@ pModDoc->UpdateAllViews(this, HINT_MODCHANNELS | HINT_MODTYPE); SetCurrentPattern(m_nPattern); } - InvalidatePattern(); + InvalidatePattern(true); pModDoc->SetModified(); } } Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2012-05-10 16:31:50 UTC (rev 1267) +++ trunk/OpenMPT/mptrack/version.h 2012-05-13 20:04:12 UTC (rev 1268) @@ -19,7 +19,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 01 -#define VER_MINORMINOR 01 +#define VER_MINORMINOR 02 //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/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2012-05-10 16:31:50 UTC (rev 1267) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2012-05-13 20:04:12 UTC (rev 1268) @@ -891,20 +891,30 @@ LPSTR CSoundFile::AllocateSample(UINT nbytes) //------------------------------------------- { - if (nbytes>0xFFFFFFD6) - return NULL; - LPSTR p = (LPSTR)GlobalAllocPtr(GHND, (nbytes+39) & ~7); - if (p) p += 16; - return p; + if (nbytes > 0xFFFFFFD6) + return nullptr; + + // Allocate with some overhead (16 bytes before sample start, and at least 16 bytes after that) + const size_t allocSize = (nbytes + 39) & ~7; + + try + { + LPSTR p = (LPSTR)new char[allocSize]; + memset(p, 0, allocSize); + return (p + 16); + } catch(MPTMemoryException) + { + return nullptr; + } } -void CSoundFile::FreeSample(LPVOID p) -//----------------------------------- +void CSoundFile::FreeSample(void *p) +//---------------------------------- { if (p) { - GlobalFreePtr(((LPSTR)p)-16); + delete[] (((char *)p) - 16); } } @@ -2800,8 +2810,7 @@ if(m.param == 0xC0) { m.command = CMD_NONE; - m.volcmd = VOLCMD_VOLUME; - m.vol = 0; + m.note = NOTE_NOTECUT; } else if(m.param == 0xD0) { m.command = CMD_NONE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |