From 228d2317537eb8ad95570df3983ea1996d0ab178 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 12 Jan 2021 02:34:18 +0100 Subject: [PATCH] Avoid copying POST data in NSURLSession wxWebRequest code Just give the ownership of the buffer to NSData instead of copying it. --- src/osx/webrequest_urlsession.mm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/osx/webrequest_urlsession.mm b/src/osx/webrequest_urlsession.mm index 9283c67820..289b8f1b92 100644 --- a/src/osx/webrequest_urlsession.mm +++ b/src/osx/webrequest_urlsession.mm @@ -125,11 +125,11 @@ void wxWebRequestURLSession::Start() if (m_dataSize) { // Read all upload data to memory buffer - wxMemoryBuffer memBuf; - m_dataStream->Read(memBuf.GetWriteBuf(m_dataSize), m_dataSize); + void* const buf = malloc(m_dataSize); + m_dataStream->Read(buf, m_dataSize); - // Create NSData from memory buffer - NSData* data = [NSData dataWithBytes:memBuf.GetData() length:m_dataSize]; + // Create NSData from memory buffer, passing it ownership of the data. + NSData* data = [NSData dataWithBytesNoCopy:buf length:m_dataSize]; m_task = [[m_sessionImpl.GetSession() uploadTaskWithRequest:req fromData:data] retain]; } else