From c6b90a037ed606b01f3e25926c53821f9a7fb34d Mon Sep 17 00:00:00 2001 From: zeromus Date: Fri, 1 Aug 2008 03:31:06 +0000 Subject: [PATCH] fix fds loading --- src/driver.h | 4 ++++ src/drivers/win/archive.cpp | 2 ++ src/drivers/win/main.cpp | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) 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)