--- libgig/trunk/src/gig.cpp 2005/01/25 01:05:33 349 +++ libgig/trunk/src/gig.cpp 2005/01/25 21:54:24 350 @@ -1194,7 +1194,7 @@ for (uint i = 0; i < Dimensions; i++) { if (pDimensionDefinitions[i].ranges) delete[] pDimensionDefinitions[i].ranges; } - for (int i = 0; i < 32; i++) { + for (int i = 0; i < 256; i++) { if (pDimensionRegions[i]) delete pDimensionRegions[i]; } } @@ -1313,6 +1313,7 @@ RIFF::List* lrgn = insList->GetSubList(LIST_TYPE_LRGN); if (!lrgn) throw gig::Exception("Mandatory chunks in chunk not found."); pRegions = new Region*[Regions]; + for (uint i = 0; i < Regions; i++) pRegions[i] = NULL; RIFF::List* rgn = lrgn->GetFirstSubList(); unsigned int iRegion = 0; while (rgn) { @@ -1336,8 +1337,8 @@ if (pRegions) { if (pRegions[i]) delete (pRegions[i]); } - delete[] pRegions; } + if (pRegions) delete[] pRegions; } /** @@ -1393,6 +1394,28 @@ pInstruments = NULL; } + File::~File() { + // free samples + if (pSamples) { + SamplesIterator = pSamples->begin(); + while (SamplesIterator != pSamples->end() ) { + delete (*SamplesIterator); + SamplesIterator++; + } + pSamples->clear(); + + } + // free instruments + if (pInstruments) { + InstrumentsIterator = pInstruments->begin(); + while (InstrumentsIterator != pInstruments->end() ) { + delete (*InstrumentsIterator); + InstrumentsIterator++; + } + pInstruments->clear(); + } + } + Sample* File::GetFirstSample() { if (!pSamples) LoadSamples(); if (!pSamples) return NULL;