1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-25 08:38:39 +02:00

Fix crash in new binary AutoSave

Would happen when writing tags with a value whose length was greater
than 65535 due to the use of shorts.  Now uses int instead.
This commit is contained in:
Leland Lucius 2015-07-08 10:13:34 -05:00
parent 22c8f7fb76
commit f434789f34

View File

@ -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)];