From: <sag...@us...> - 2010-02-20 16:32:19
|
Revision: 500 http://modplug.svn.sourceforge.net/modplug/?rev=500&view=rev Author: saga-games Date: 2010-02-20 16:32:10 +0000 (Sat, 20 Feb 2010) Log Message: ----------- [Fix] Comments Tab: When editing sample / instrument names, they are limited properly now. [Fix] Orderlist Editor: Fixed possible logical error when moving orders (don't think that anything happened due to the && vs. ||, though) [Imp] Playback: When PT1x flag is activated, Amiga note range limits are automatically taken into account. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/view_com.cpp trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2010-02-17 20:38:04 UTC (rev 499) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2010-02-20 16:32:10 UTC (rev 500) @@ -897,7 +897,7 @@ // drop before or after the selection bool bMoveBack = !(m_nDragOrder < (UINT)m_nDropPos); // don't do anything if drop position is inside the selection - if(m_nDropPos >= selection.nOrdLo && m_nDropPos <= selection.nOrdHi || m_nDragOrder == m_nDropPos) return; + if((m_nDropPos >= selection.nOrdLo && m_nDropPos <= selection.nOrdHi) || m_nDragOrder == m_nDropPos) return; // drag one order or multiple orders? bool bMultiSelection = (selection.nOrdLo != selection.nOrdHi); @@ -922,7 +922,7 @@ SetCurSel((bMoveBack && (!bSelection)) ? m_nDropPos - 1 : m_nDropPos); } else { - SetCurSel(((m_nDragOrder < (UINT)m_nDropPos) && (!bSelection)) ? m_nDropPos - 1 : m_nDropPos); + SetCurSel(((m_nDragOrder < m_nDropPos) && (!bSelection)) ? m_nDropPos - 1 : m_nDropPos); } m_pModDoc->SetModified(); } Modified: trunk/OpenMPT/mptrack/view_com.cpp =================================================================== --- trunk/OpenMPT/mptrack/view_com.cpp 2010-02-17 20:38:04 UTC (rev 499) +++ trunk/OpenMPT/mptrack/view_com.cpp 2010-02-20 16:32:10 UTC (rev 500) @@ -486,25 +486,30 @@ UINT iItem = plvItem->iItem; CSoundFile *pSndFile = pModDoc->GetSoundFile(); lstrcpyn(s, plvItem->pszText, sizeof(s)); - for (UINT i=strlen(s); i<sizeof(s); i++) s[i] = 0; + + size_t maxStrLen = (m_nListId == IDC_LIST_SAMPLES) ? pSndFile->GetModSpecifications().sampleNameLengthMax : pSndFile->GetModSpecifications().instrNameLengthMax; + + for (size_t i = min(maxStrLen, strlen(s)); i < sizeof(s); i++) + s[i] = 0; + if (m_nListId == IDC_LIST_SAMPLES) { if (iItem < pSndFile->m_nSamples) { - s[31] = 0; - memcpy(pSndFile->m_szNames[iItem+1], s, 32); + memcpy(pSndFile->m_szNames[iItem + 1], s, sizeof(pSndFile->m_szNames[iItem + 1])); + SetNullTerminator(pSndFile->m_szNames[iItem + 1]); // 05/01/05 : ericus replaced "<< 24" by "<< 20" : 4000 samples -> 12bits [see Moddoc.h] - pModDoc->UpdateAllViews(this, ((iItem+1) << HINT_SHIFT_SMP) | (HINT_SMPNAMES|HINT_SAMPLEINFO), this); + pModDoc->UpdateAllViews(this, ((iItem + 1) << HINT_SHIFT_SMP) | (HINT_SMPNAMES|HINT_SAMPLEINFO), this); } } else if (m_nListId == IDC_LIST_INSTRUMENTS) { - if ((iItem < pSndFile->m_nInstruments) && (pSndFile->Instruments[iItem+1])) + if ((iItem < pSndFile->m_nInstruments) && (pSndFile->Instruments[iItem + 1])) { MODINSTRUMENT *pIns = pSndFile->Instruments[iItem+1]; - s[31] = 0; - memcpy(pIns->name, s, 32); - pModDoc->UpdateAllViews(this, ((iItem+1) << HINT_SHIFT_INS) | (HINT_INSNAMES|HINT_INSTRUMENT), this); + memcpy(pIns->name, s, sizeof(pIns->name)); + SetNullTerminator(pIns->name); + pModDoc->UpdateAllViews(this, ((iItem + 1) << HINT_SHIFT_INS) | (HINT_INSNAMES|HINT_INSTRUMENT), this); } } else { Modified: trunk/OpenMPT/soundlib/Sndmix.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp 2010-02-17 20:38:04 UTC (rev 499) +++ trunk/OpenMPT/soundlib/Sndmix.cpp 2010-02-20 16:32:10 UTC (rev 500) @@ -1259,7 +1259,7 @@ } // Preserve Amiga freq limits - if (m_dwSongFlags & SONG_AMIGALIMITS) + if (m_dwSongFlags & (SONG_AMIGALIMITS|SONG_PT1XMODE)) period = CLAMP(period, 113 * 4, 856 * 4); // Pitch/Filter Envelope This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |