This commit is contained in:
tildearrow 2022-04-26 01:07:28 -05:00
parent 28af57c4f0
commit 9eb9561b53
4 changed files with 26 additions and 1 deletions

View file

@ -1428,6 +1428,10 @@ bool DivEngine::addWaveFromFile(const char* path) {
fclose(f);
return false;
}
if (len==(SIZE_MAX>>1)) {
fclose(f);
return false;
}
if (len==0) {
fclose(f);
return false;
@ -1620,6 +1624,14 @@ int DivEngine::addSampleFromFile(const char* path) {
return -1;
}
if (len==(SIZE_MAX>>1)) {
fclose(f);
BUSY_END;
lastError="file is invalid!";
delete sample;
return -1;
}
if (fseek(f,0,SEEK_SET)<0) {
fclose(f);
BUSY_END;

View file

@ -1220,6 +1220,11 @@ std::vector<DivInstrument*> DivEngine::instrumentFromFile(const char* path) {
fclose(f);
return ret;
}
if (len==(SIZE_MAX>>1)) {
lastError=strerror(errno);
fclose(f);
return ret;
}
if (len==0) {
lastError=strerror(errno);
fclose(f);

View file

@ -1286,6 +1286,7 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) {
);
break;
case GUI_FILE_INS_OPEN:
prevIns=-3;
if (!dirExists(workingDirIns)) workingDirIns=getHomeDir();
hasOpened=fileDialog->openLoad(
"Load Instrument",
@ -1298,6 +1299,9 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) {
std::vector<DivInstrument*> instruments=e->instrumentFromFile(path);
if (!instruments.empty()) {
e->loadTempIns(instruments[0]);
if (curIns!=-2) {
prevIns=curIns;
}
curIns=-2;
}
for (DivInstrument* i: instruments) delete i;
@ -2937,6 +2941,9 @@ bool FurnaceGUI::loop() {
workingDirLayout=fileDialog->getPath()+DIR_SEPARATOR_STR;
break;
}
if (prevIns!=-3) {
curIns=prevIns;
}
if (fileDialog->accepted()) {
fileName=fileDialog->getFileName();
if (fileName!="") {
@ -3791,6 +3798,7 @@ FurnaceGUI::FurnaceGUI():
curSample(0),
curOctave(3),
curOrder(0),
prevIns(0),
oldRow(0),
oldOrder(0),
oldOrder1(0),

View file

@ -931,7 +931,7 @@ class FurnaceGUI {
char finalLayoutPath[4096];
int curIns, curWave, curSample, curOctave, curOrder, oldRow, oldOrder, oldOrder1, editStep, exportLoops, soloChan, soloTimeout, orderEditMode, orderCursor;
int curIns, curWave, curSample, curOctave, curOrder, prevIns, oldRow, oldOrder, oldOrder1, editStep, exportLoops, soloChan, soloTimeout, orderEditMode, orderCursor;
int loopOrder, loopRow, loopEnd, isClipping, extraChannelButtons, patNameTarget, newSongCategory, latchTarget;
int wheelX, wheelY;