Allocate the tapnote array; it's so large it's causing stack problems, so get
it off the stack.
This commit is contained in:
@@ -24,21 +24,37 @@
|
||||
|
||||
NoteData::NoteData()
|
||||
{
|
||||
for(int t = 0; t < MAX_NOTE_TRACKS; ++t)
|
||||
m_TapNotes[t] = new TapNote[MAX_TAP_NOTE_ROWS];
|
||||
Init();
|
||||
}
|
||||
|
||||
NoteData::NoteData(const NoteData &cpy) { *this = cpy; }
|
||||
NoteData &NoteData::operator= (const NoteData &cpy)
|
||||
{
|
||||
for(int t = 0; t < MAX_NOTE_TRACKS; ++t) {
|
||||
m_TapNotes[t] = new TapNote[MAX_TAP_NOTE_ROWS];
|
||||
memmove( m_TapNotes[t], cpy.m_TapNotes[t], sizeof(TapNote) * MAX_TAP_NOTE_ROWS );
|
||||
}
|
||||
m_iNumTracks = cpy.m_iNumTracks;
|
||||
m_iNumHoldNotes = cpy.m_iNumHoldNotes;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void NoteData::Init()
|
||||
{
|
||||
memset( m_TapNotes, '0', MAX_NOTE_TRACKS*MAX_TAP_NOTE_ROWS*sizeof(m_TapNotes[0][0]) );
|
||||
for(int t = 0; t < MAX_NOTE_TRACKS; ++t)
|
||||
memset( m_TapNotes[t], '0', sizeof(TapNote) * MAX_TAP_NOTE_ROWS );
|
||||
m_iNumTracks = 0;
|
||||
m_iNumHoldNotes = 0;
|
||||
}
|
||||
|
||||
NoteData::~NoteData()
|
||||
{
|
||||
for(int t = 0; t < MAX_NOTE_TRACKS; ++t)
|
||||
delete[] m_TapNotes[t];
|
||||
}
|
||||
|
||||
|
||||
void NoteData::LoadFromSMNoteDataString( CString sSMNoteData )
|
||||
{
|
||||
int iNumTracks = m_iNumTracks;
|
||||
|
||||
@@ -27,11 +27,13 @@ class NoteData
|
||||
{
|
||||
public:
|
||||
NoteData();
|
||||
void Init();
|
||||
~NoteData();
|
||||
NoteData(const NoteData &cpy);
|
||||
void Init();
|
||||
NoteData &operator=(const NoteData &cpy);
|
||||
|
||||
int m_iNumTracks;
|
||||
TapNote m_TapNotes[MAX_NOTE_TRACKS][MAX_TAP_NOTE_ROWS];
|
||||
TapNote *m_TapNotes[MAX_NOTE_TRACKS];
|
||||
HoldNote m_HoldNotes[MAX_HOLD_NOTES];
|
||||
int m_iNumHoldNotes;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user