From: <sag...@us...> - 2014-10-05 22:43:25
|
Revision: 4380 http://sourceforge.net/p/modplug/code/4380 Author: saga-games Date: 2014-10-05 22:43:11 +0000 (Sun, 05 Oct 2014) Log Message: ----------- [Ref] CCtrlPatterns::OnPatternDuplicate makes use of Patterns.Duplicate [Fix] FileReader compile fix for non-MSVC Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/soundlib/FileReader.h Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-10-05 22:26:44 UTC (rev 4379) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-10-05 22:43:11 UTC (rev 4380) @@ -847,27 +847,10 @@ PATTERNINDEX curPat = m_sndFile.Order[selection.firstOrd + i]; if(m_sndFile.Patterns.IsValidIndex(curPat) && patReplaceIndex[curPat] == PATTERNINDEX_INVALID) { - ROWINDEX rows = m_sndFile.Patterns[curPat].GetNumRows(); - Limit(rows, m_sndFile.GetModSpecifications().patternRowsMin, m_sndFile.GetModSpecifications().patternRowsMax); - - PATTERNINDEX newPat = m_modDoc.InsertPattern(insertWhere + i, rows); - if((newPat != PATTERNINDEX_INVALID) && (newPat < m_sndFile.Patterns.Size()) && (m_sndFile.Patterns[curPat] != nullptr)) + PATTERNINDEX newPat = m_sndFile.Patterns.Duplicate(curPat); + if(newPat != PATTERNINDEX_INVALID) { - // Update time signature and pattern name - if(m_sndFile.Patterns[curPat].GetOverrideSignature()) - { - m_sndFile.Patterns[newPat].SetSignature(m_sndFile.Patterns[curPat].GetRowsPerBeat(), m_sndFile.Patterns[curPat].GetRowsPerMeasure()); - } - m_sndFile.Patterns[newPat].SetName(m_sndFile.Patterns[curPat].GetName()); - - // Copy pattern data - size_t n = m_sndFile.Patterns[curPat].GetNumRows(); - if (m_sndFile.Patterns[newPat].GetNumRows() < n) n = m_sndFile.Patterns[newPat].GetNumRows(); - n *= m_sndFile.GetNumChannels(); - if(n) - { - memcpy(m_sndFile.Patterns[newPat], m_sndFile.Patterns[curPat], n * sizeof(ModCommand)); - } + m_sndFile.Order.Insert(insertWhere + i, 1, newPat); success = true; // Mark as duplicated, so if this pattern is to be duplicated again, the same new pattern number is inserted into the order list. patReplaceIndex[curPat] = newPat; Modified: trunk/OpenMPT/soundlib/FileReader.h =================================================================== --- trunk/OpenMPT/soundlib/FileReader.h 2014-10-05 22:26:44 UTC (rev 4379) +++ trunk/OpenMPT/soundlib/FileReader.h 2014-10-05 22:43:11 UTC (rev 4380) @@ -875,7 +875,7 @@ bool ReadNullString(StrT &dest, const off_t maxLength = SIZE_MAX) { dest.clear(); - StrT::traits_type::char_type c; + typename StrT::traits_type::char_type c; while(Read(c) && c != 0 && dest.length() < maxLength) { dest += c; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |