Core: Don't save state if core fails to serialize

This commit is contained in:
Vicki Pfau 2017-04-05 14:45:53 -07:00
parent 472faf3881
commit c665f939e7
2 changed files with 4 additions and 5 deletions

View File

@ -38,6 +38,7 @@ Bugfixes:
- SDL: Fix race condition with audio thread when starting
- GB: Fix flickering when screen is strobed quickly
- FFmpeg: Fix overflow and general issues with audio encoding
- Core: Don't save state if core fails to serialize
Misc:
- SDL: Remove scancode key input
- GBA Video: Clean up unused timers

View File

@ -160,10 +160,9 @@ static bool _savePNGState(struct mCore* core, struct VFile* vf, struct mStateExt
size_t stateSize = core->stateSize(core);
void* state = anonymousMemoryMap(stateSize);
if (!state) {
if (!state || !core->saveState(core, state)) {
return false;
}
core->saveState(core, state);
uLongf len = compressBound(stateSize);
void* buffer = malloc(len);
@ -343,15 +342,14 @@ bool mCoreSaveStateNamed(struct mCore* core, struct VFile* vf, int flags) {
UNUSED(flags);
#endif
vf->truncate(vf, stateSize);
struct GBASerializedState* state = vf->map(vf, stateSize, MAP_WRITE);
if (!state) {
void* state = vf->map(vf, stateSize, MAP_WRITE);
if (!state || !core->saveState(core, state)) {
mStateExtdataDeinit(&extdata);
if (cheatVf) {
cheatVf->close(cheatVf);
}
return false;
}
core->saveState(core, state);
vf->unmap(vf, state, stateSize);
vf->seek(vf, stateSize, SEEK_SET);
mStateExtdataSerialize(&extdata, vf);