Fix off by 1 error in buffer size in wxOSX wxDropTarget code.

The size of the buffer used for the data currently needs to include an extra
byte for the trailing NUL. This is wrong, as it means that GetDataSize() and
GetDataHere() behaviour is not consistent, but at least avoid overrunning the
buffer for now.

Also use wxCharBuffer instead of raw char array to make the code safer (both
because it releases the memory automatically and because it also adds an extra
byte for the trailing NUL automatically as well, making such bugs impossible).

See #15914.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76056 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2014-03-02 15:51:53 +00:00
parent 1d1ccf9e99
commit 2eb5e8189e

View File

@ -129,10 +129,9 @@ bool wxDropTarget::GetData()
}
else
{
char *d = new char[size];
data->GetDataHere( format, (void*)d );
m_dataObject->SetData( format, size, d );
delete [] d;
wxCharBuffer d(size);
data->GetDataHere( format, d.data() );
m_dataObject->SetData( format, size, d.data() );
}
}
}