Don't use mbc_str() which can fail to convert contents of the string created
using wxString::From8BitData(). Use To8BitData() instead.
This fixes posting of binary data via HTTP using binary content transfer
encoding.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64728
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
- Added wxMessageQueue::Clear().
- Added wxConfig::Read(float *) overload (Terry Farnham).
- Always use decimal point (and not the current locale separator) in wxConfig.
- Added wxMessageQueue::Clear().
- Added wxConfig::Read(float *) overload (Terry Farnham).
- Always use decimal point (and not the current locale separator) in wxConfig.
+- Fix posting of binary data using wxHTTP (Catalin Raceanu).
Write("\r\n", 2);
if ( req == wxHTTP_POST ) {
Write("\r\n", 2);
if ( req == wxHTTP_POST ) {
- Write(m_post_buf.mbc_str(), m_post_buf.Len());
+ // Post data can be arbitrary binary data when the "binary" content
+ // transfer encoding is used so don't assume it's ASCII only or
+ // NUL-terminated.
+ {
+ const wxScopedCharBuffer buf(m_post_buf.To8BitData());
+ Write(buf, buf.length());
+ } // delete the buffer before modifying the string it points to, it
+ // wouldn't really be a problem here even if we didn't do this
+ // because we won't use this buffer again but this will avoid any
+ // nasty surprises in the future if this code changes
+
m_post_buf = wxEmptyString;
}
m_post_buf = wxEmptyString;
}