X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e97cbf83982c29ff83799a37da5a85e2c4329f88..e5805c0fde8bfabee79b155fbea761398efa4fc0:/src/common/http.cpp diff --git a/src/common/http.cpp b/src/common/http.cpp index c4a6c05dce..4af87f6d24 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -251,16 +251,14 @@ bool wxHTTP::Connect(const wxString& host, unsigned short port) wxIPV4address *addr; if (m_addr) { - delete m_addr; - m_addr = NULL; + wxDELETE(m_addr); Close(); } m_addr = addr = new wxIPV4address(); if (!addr->Hostname(host)) { - delete m_addr; - m_addr = NULL; + wxDELETE(m_addr); m_lastError = wxPROTO_NETERR; return false; } @@ -348,7 +346,17 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req) 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; }