From 1e0f9d325c8cf99df8b8f321a207bcbdf782209b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 14 May 2019 16:36:29 +0200 Subject: [PATCH] LibCore: Avoid a big malloc in CIODevice's internal buffering. This heap allocation was totally avoidable and can be replaced by a stack buffer instead. Dodges a bunch of mmap() traffic. --- LibCore/CIODevice.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/LibCore/CIODevice.cpp b/LibCore/CIODevice.cpp index 6043011969..fee3b72884 100644 --- a/LibCore/CIODevice.cpp +++ b/LibCore/CIODevice.cpp @@ -146,8 +146,8 @@ bool CIODevice::populate_read_buffer() { if (m_fd < 0) return false; - auto buffer = ByteBuffer::create_uninitialized(PAGE_SIZE); - int nread = ::read(m_fd, buffer.pointer(), buffer.size()); + byte buffer[1024]; + int nread = ::read(m_fd, buffer, sizeof(buffer)); if (nread < 0) { set_error(errno); return false; @@ -156,8 +156,7 @@ bool CIODevice::populate_read_buffer() set_eof(true); return false; } - buffer.trim(nread); - m_buffered_data.append(buffer.pointer(), buffer.size()); + m_buffered_data.append(buffer, nread); return true; }