diff options
author | qeed <qeed@users.sf.net> | 2010-10-01 23:27:12 +0400 |
---|---|---|
committer | qeed <qeed@users.sf.net> | 2010-10-01 23:27:12 +0400 |
commit | fc1a10b2a4542f0c12a1d15333b76edabfb42b43 (patch) | |
tree | 905d9456962a720a967b825acafd26d0ed4097bb | |
parent | b7b3319dfc6a1d23a804717c5dd25ed530555237 (diff) |
fixed fp issue again, and then change vsprintf for something
-rw-r--r-- | src/emufile.h | 16 | ||||
-rw-r--r-- | src/state.cpp | 4 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/emufile.h b/src/emufile.h index 77ab466b..37b29631 100644 --- a/src/emufile.h +++ b/src/emufile.h @@ -132,13 +132,21 @@ public: virtual int fprintf(const char *format, ...) {
va_list argptr;
va_start(argptr, format);
-
+
+ char *tempbuf = new char[size()];
+ int amt;
+ amt = vsnprintf(tempbuf, size(), format, argptr);
+
+ char *placeholder = new char[20];
+ placeholder[0] = 20;
//we dont generate straight into the buffer because it will null terminate (one more byte than we want)
- int amt = vsnprintf(0,0,format,argptr);
+ /*int amt = vsnprintf(0,0,format,argptr);
char* tempbuf = new char[amt+1];
- vsprintf(tempbuf,format,argptr);
- fwrite(tempbuf,amt);
+ vsprintf(tempbuf,format,argptr);*/
+
+ fwrite(tempbuf,amt);
delete[] tempbuf;
+ delete[] placeholder;
va_end(argptr);
return amt;
};
diff --git a/src/state.cpp b/src/state.cpp index 1e76883e..31e2b982 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -474,7 +474,7 @@ void FCEUSS_Save(const char *fname) st = FCEUD_UTF8_fstream(fn,"wb");
}
- if(st == NULL)
+ if(st == NULL || st->get_fp() == NULL)
{
FCEU_DispMessage("State %d save error.",0,CurrentState);
return;
@@ -729,7 +729,7 @@ bool FCEUSS_Load(const char *fname) SaveStateStatus[CurrentState]=0;
return false;
}
-
+
//If in bot mode, don't do a backup when loading.
//Otherwise you eat at the hard disk, since so many
//states are being loaded.
|