Allocate the tapnote array; it's so large it's causing stack problems, so get

it off the stack.
This commit is contained in:
Glenn Maynard
2002-10-11 23:23:49 +00:00
parent fd1d2e82ed
commit 73188fab68
2 changed files with 22 additions and 4 deletions
+18 -2
View File
@@ -24,21 +24,37 @@
NoteData::NoteData() NoteData::NoteData()
{ {
for(int t = 0; t < MAX_NOTE_TRACKS; ++t)
m_TapNotes[t] = new TapNote[MAX_TAP_NOTE_ROWS];
Init(); 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() 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_iNumTracks = 0;
m_iNumHoldNotes = 0; m_iNumHoldNotes = 0;
} }
NoteData::~NoteData() NoteData::~NoteData()
{ {
for(int t = 0; t < MAX_NOTE_TRACKS; ++t)
delete[] m_TapNotes[t];
} }
void NoteData::LoadFromSMNoteDataString( CString sSMNoteData ) void NoteData::LoadFromSMNoteDataString( CString sSMNoteData )
{ {
int iNumTracks = m_iNumTracks; int iNumTracks = m_iNumTracks;
+4 -2
View File
@@ -27,11 +27,13 @@ class NoteData
{ {
public: public:
NoteData(); NoteData();
void Init();
~NoteData(); ~NoteData();
NoteData(const NoteData &cpy);
void Init();
NoteData &operator=(const NoteData &cpy);
int m_iNumTracks; 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]; HoldNote m_HoldNotes[MAX_HOLD_NOTES];
int m_iNumHoldNotes; int m_iNumHoldNotes;