diff options
author | Martin Banky <Martin.Banky@gmail.com> | 2015-10-15 23:07:32 -0700 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2015-10-19 07:10:19 +0000 |
commit | 3e9f61f305dc4c988e6f2718df56df80f639734e (patch) | |
tree | 3ec907ce2e83327c55c3ce4195331915dc13e86d /src | |
parent | b63185824ea213c2d19472fee302f007151dd5ca (diff) |
Scene Graph: Fixed memory leak in QSGBatchRenderer::Renderer::map()
In the uncommon case (m_context->hasBrokenIndexBufferObjects()
|| m_visualizeMode != VisualizeNothing) of mapping a buffer, malloc is
called without first freeing the previous malloc.
Regression was introduced with:
qt5 commit: 9347499e78f03710eaf24af3c1e7ac650d0ef81d
qtdeclarative commit: a371bac3fba73f92aaa63a68d8ab1ae81a1d1031
[ChangeLog][QtQuick][Scene Graph] Fixed memory leak in
QSGBatchRenderer::Renderer::map()
Task-number: QTBUG-48799
Change-Id: I5ef4b7301d390463845aeb192851f86655962499
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp index 42b9f526d0..4b0bc683c2 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp @@ -895,11 +895,11 @@ void Renderer::map(Buffer *buffer, int byteSize, bool isIndexBuf) if (byteSize > pool.size()) pool.resize(byteSize); buffer->data = pool.data(); - } else { + } else if (buffer->size != byteSize) { + free(buffer->data); buffer->data = (char *) malloc(byteSize); } buffer->size = byteSize; - } void Renderer::unmap(Buffer *buffer, bool isIndexBuf) |