diff --git a/src/AutoRecovery.cpp b/src/AutoRecovery.cpp index 8a88210fb..29f434aa1 100644 --- a/src/AutoRecovery.cpp +++ b/src/AutoRecovery.cpp @@ -457,7 +457,7 @@ void AutoSaveFile::WriteAttr(const wxString & name, const wxString & value) mBuffer.PutC(FT_String); WriteName(name); - short len = value.Length() * sizeof(wxChar); + int len = value.Length() * sizeof(wxChar); mBuffer.Write(&len, sizeof(len)); mBuffer.Write(value.c_str(), len); @@ -525,7 +525,7 @@ void AutoSaveFile::WriteData(const wxString & value) { mBuffer.PutC(FT_Data); - short len = value.Length() * sizeof(wxChar); + int len = value.Length() * sizeof(wxChar); mBuffer.Write(&len, sizeof(len)); mBuffer.Write(value.c_str(), len); @@ -535,7 +535,7 @@ void AutoSaveFile::Write(const wxString & value) { mBuffer.PutC(FT_Raw); - short len = value.Length() * sizeof(wxChar); + int len = value.Length() * sizeof(wxChar); mBuffer.Write(&len, sizeof(len)); mBuffer.Write(value.c_str(), len); @@ -595,6 +595,7 @@ void AutoSaveFile::CheckSpace(wxMemoryOutputStream & os) void AutoSaveFile::WriteName(const wxString & name) { + wxASSERT(name.Length() * sizeof(wxChar) <= SHRT_MAX); short len = name.Length() * sizeof(wxChar); short id; @@ -771,7 +772,7 @@ bool AutoSaveFile::Decode(const wxString & fileName) case FT_String: { - short len; + int len; in.Read(&id, sizeof(id)); in.Read(&len, sizeof(len)); @@ -866,7 +867,7 @@ bool AutoSaveFile::Decode(const wxString & fileName) case FT_Data: { - short len; + int len; in.Read(&len, sizeof(len)); wxChar *val = new wxChar[len / sizeof(wxChar)]; @@ -879,7 +880,7 @@ bool AutoSaveFile::Decode(const wxString & fileName) case FT_Raw: { - short len; + int len; in.Read(&len, sizeof(len)); wxChar *val = new wxChar[len / sizeof(wxChar)];