diff --git a/src/driver.h b/src/driver.h index 4a68d250..80ca2914 100644 --- a/src/driver.h +++ b/src/driver.h @@ -188,9 +188,13 @@ int FCEUI_SetCheat(uint32 which, const char *name, int32 a, int32 v, int compare void FCEUI_CheatSearchShowExcluded(void); void FCEUI_CheatSearchSetCurrentAsOriginal(void); +//.rom #define FCEUIOD_ROMS 0 +//NV = nonvolatile. save data. #define FCEUIOD_NV 1 +//savestates #define FCEUIOD_STATES 2 +//.fds ? #define FCEUIOD_FDSROM 3 #define FCEUIOD_SNAPS 4 #define FCEUIOD_CHEATS 5 diff --git a/src/drivers/win/archive.cpp b/src/drivers/win/archive.cpp index ed7bdfb9..e8f4fb27 100644 --- a/src/drivers/win/archive.cpp +++ b/src/drivers/win/archive.cpp @@ -401,6 +401,8 @@ ArchiveScanRecord FCEUD_ScanArchive(std::string fname) //check the file against the signatures std::fstream* inf = FCEUD_UTF8_fstream(fname,"rb"); + if(!inf) return ArchiveScanRecord(); + int matchingFormat = -1; for(uint32 i=0;i<(int)formatRecords.size();i++) { diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index f905dcf3..2e946e06 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -1188,7 +1188,11 @@ std::fstream* FCEUD_UTF8_fstream(const char *n, const char *m) else if(!strcmp(m,"a+") || !strcmp(m,"a+b")) mode |= std::ios_base::in | std::ios_base::out | std::ios_base::app; - return new std::fstream(n,mode); + std::fstream *fs = new std::fstream(n,mode); + if(!fs->is_open()) { + delete fs; + return 0; + } else return fs; } FILE *FCEUD_UTF8fopen(const char *n, const char *m)