fix loading gba saves re-allocating buffer (thus invalidating its memory domain)

This commit is contained in:
CasualPokePlayer 2023-12-07 22:52:35 -08:00
parent 4d6bc5a33a
commit c2e8bda5e2
2 changed files with 4 additions and 5 deletions

Binary file not shown.

View File

@ -23,12 +23,11 @@ ECL_EXPORT void PutSaveRam(u8* data, u32 len)
NDS::LoadSave(data, len);
NdsSaveRamIsDirty = false;
data += ndsSaveLen;
len -= ndsSaveLen;
if (gbaSaveLen && len >= gbaSaveLen)
if (gbaSaveLen && len >= (ndsSaveLen + gbaSaveLen))
{
GBACart::LoadSave(data, gbaSaveLen);
// don't use GBACart::LoadSave! it will re-allocate the save buffer (bad!)
// NDS::LoadSave is fine (and should be used)
memcpy(GBACart::GetSaveMemory(), data + ndsSaveLen, gbaSaveLen);
GbaSaveRamIsDirty = false;
}
}