fix memory corruption when deleting unused samples

This commit is contained in:
tildearrow 2025-08-14 04:03:16 -05:00
parent 08764e0e88
commit aa7ab87b21

View file

@ -939,6 +939,7 @@ void DivEngine::delUnusedSamples() {
bool* isUsed=new bool[song.sample.size()];
memset(isUsed,0,song.sample.size()*sizeof(bool));
int isUsedMax=((int)song.sample.size())-1;
// scan in instruments
for (DivInstrument* i: song.ins) {
@ -1020,10 +1021,10 @@ void DivEngine::delUnusedSamples() {
if (!isUsed[i]) {
delSampleUnsafe(i,false);
// rotate
for (int j=i; j<255; j++) {
for (int j=i; j<isUsedMax; j++) {
isUsed[j]=isUsed[j+1];
}
isUsed[255]=true;
isUsed[isUsedMax]=true;
i--;
}
}