|
From: Jerome F. <kin...@us...> - 2009-07-05 17:39:43
|
Update of /cvsroot/munt/mt32emu/src In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv606 Modified Files: synth.cpp Log Message: - The rhythm patchtemp area was not being initialised, potentially resulting in segfaults during sysex writes to the area. Fixed. (Thanks to Mok for report/analysis) Index: synth.cpp =================================================================== RCS file: /cvsroot/munt/mt32emu/src/synth.cpp,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** synth.cpp 11 Jun 2009 21:33:22 -0000 1.66 --- synth.cpp 5 Jul 2009 17:39:30 -0000 1.67 *************** *** 517,528 **** return false; ! for (int i = 0; i < 8; i++) { ! mt32ram.patchTemp[i].outputLevel = 80; ! mt32ram.patchTemp[i].panpot = controlROMData[controlROMMap->panSettings + i]; ! memset(mt32ram.patchTemp[i].dummyv, 0, sizeof(mt32ram.patchTemp[i].dummyv)); ! parts[i] = new Part(this, i); ! parts[i]->setProgram(controlROMData[controlROMMap->programSettings + i]); } - parts[8] = new RhythmPart(this, 8); // For resetting mt32 mid-execution --- 517,545 ---- return false; ! for (int i = 0; i < 9; i++) { ! MemParams::PatchTemp *patchTemp = &mt32ram.patchTemp[i]; ! ! // Note that except for the rhythm part, these patch fields will be set in setProgram() below anyway. ! patchTemp->patch.timbreGroup = 0; ! patchTemp->patch.timbreNum = 0; ! patchTemp->patch.keyShift = 24; ! patchTemp->patch.fineTune = 50; ! patchTemp->patch.benderRange = 12; ! patchTemp->patch.assignMode = 0; ! patchTemp->patch.reverbSwitch = 1; ! patchTemp->patch.dummy = 0; ! ! patchTemp->outputLevel = 80; ! patchTemp->panpot = controlROMData[controlROMMap->panSettings + i]; ! memset(patchTemp->dummyv, 0, sizeof(patchTemp->dummyv)); ! patchTemp->dummyv[1] = 127; ! ! if(i < 8) { ! parts[i] = new Part(this, i); ! parts[i]->setProgram(controlROMData[controlROMMap->programSettings + i]); ! } else { ! parts[i] = new RhythmPart(this, i); ! } } // For resetting mt32 mid-execution |