From 5352432d8faf319a57d1d67e3ed95472b35e33df Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Tue, 10 Sep 2013 22:23:47 -0700 Subject: [PATCH] Don't copy a negative size in savedata. Not sure what's correct here, Street Fighter Alpha 3 passes -1. It seems to call it twice, so probably the first time is to get the size? Fixes #3722, thanks @thedax. --- Core/Dialog/SavedataParam.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Dialog/SavedataParam.cpp b/Core/Dialog/SavedataParam.cpp index 59a6c8995f..e3e7459be2 100644 --- a/Core/Dialog/SavedataParam.cpp +++ b/Core/Dialog/SavedataParam.cpp @@ -528,7 +528,7 @@ bool SavedataParam::Load(SceUtilitySavedataParam *param, const std::string &save if(DecryptSave(decryptMode, data_base, &saveSize, &align_len, ((param->key[0] != 0)?cryptKey:0)) == 0) { if (param->dataBuf.IsValid()) - memcpy(data_, data_base, std::min(saveSize, (int)param->dataBufSize)); + memcpy(data_, data_base, std::min((u32)saveSize, (u32)param->dataBufSize)); saveDone = true; } delete[] data_base; @@ -537,7 +537,7 @@ bool SavedataParam::Load(SceUtilitySavedataParam *param, const std::string &save if(!saveDone) // not crypted or decrypt fail { if (param->dataBuf.IsValid()) - memcpy(data_, saveData, std::min(saveSize, (int)param->dataBufSize)); + memcpy(data_, saveData, std::min((u32)saveSize, (u32)param->dataBufSize)); } param->dataSize = (SceSize)saveSize; delete[] saveData;