mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-25 16:48:44 +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:
parent
22c8f7fb76
commit
f434789f34
@ -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)];
|
||||
|
Loading…
x
Reference in New Issue
Block a user