From a0c61a0ebc5d18bf627d512977ccf7fff3b1ab54 Mon Sep 17 00:00:00 2001 From: andreika-git Date: Thu, 22 Feb 2024 21:31:47 +0200 Subject: [PATCH] Fix BigBufferHandle https://github.com/rusefi/rusefi/issues/5983 --- firmware/controllers/core/big_buffer.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/firmware/controllers/core/big_buffer.cpp b/firmware/controllers/core/big_buffer.cpp index 363e375a15..38e9e9b1be 100644 --- a/firmware/controllers/core/big_buffer.cpp +++ b/firmware/controllers/core/big_buffer.cpp @@ -38,13 +38,17 @@ BigBufferHandle::BigBufferHandle(BigBufferHandle&& other) { } BigBufferHandle& BigBufferHandle::operator= (BigBufferHandle&& other) { - // swap contents of the two objects - m_bufferPtr = other.m_bufferPtr; - other.m_bufferPtr = nullptr; - - m_user = other.m_user; - other.m_user = BigBufferUser::None; + if (this != &other) { + if (m_bufferPtr) { + releaseBuffer(m_bufferPtr, m_user); + } + // swap contents of the two objects + m_bufferPtr = other.m_bufferPtr; + other.m_bufferPtr = nullptr; + m_user = other.m_user; + other.m_user = BigBufferUser::None; + } return *this; }