From 90fe6301ba43829d7dbe96bae33d5ce43640d726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Fri, 7 May 2021 15:28:00 +0200 Subject: [PATCH] rhi: Fix memory leak The leak can be reproduced by running the test project from QTBUG-63557 with asan, although that report is about yet another leak. [ChangeLog][gui][QRhiGles2] Fixed a memory leak in QRhiGles2 Task-number: QTBUG-63557 Change-Id: Ic4d346abb36a5666feb3ceb881865b029f5a6945 Reviewed-by: Laszlo Agocs Reviewed-by: Qt CI Bot (cherry picked from commit 1a63217021f35d09c92457fcad9d513f8f90bc4d) Reviewed-by: Qt Cherry-pick Bot --- src/gui/rhi/qrhigles2.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp index 7bc1e9040c6..751a16c0511 100644 --- a/src/gui/rhi/qrhigles2.cpp +++ b/src/gui/rhi/qrhigles2.cpp @@ -4134,6 +4134,9 @@ QGles2Buffer::~QGles2Buffer() void QGles2Buffer::destroy() { + delete[] data; + data = nullptr; + if (!buffer) return; @@ -4141,10 +4144,7 @@ void QGles2Buffer::destroy() e.type = QRhiGles2::DeferredReleaseEntry::Buffer; e.buffer.buffer = buffer; - buffer = 0; - delete[] data; - data = nullptr; QRHI_RES_RHI(QRhiGles2); rhiD->releaseQueue.append(e); @@ -4168,6 +4168,7 @@ bool QGles2Buffer::create() qWarning("Uniform buffer: multiple usages specified, this is not supported by the OpenGL backend"); return false; } + delete[] data; data = new char[nonZeroSize]; QRHI_PROF_F(newBuffer(this, uint(nonZeroSize), 0, 1)); return true;