diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-05-02 14:58:47 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-05-05 17:32:23 +0000 |
commit | b5490d74e339f812350db4322479a5bab6c80e40 (patch) | |
tree | 8a3de12441e0b80669ba0403f571e95f66797d96 /src/plugins | |
parent | b76bc40c960b67b6b35aa809bffc5ef0232b7d13 (diff) |
GLTFIO: fix leak of QShaderProgram in processJSONProgram()
Perform all checking before allocating a new QShaderProgram,
so we can return early without leaking the new object.
Even saves a few bytes in text size...
Change-Id: I1e3aabd7ea7cea0bc8dfded2911a8b415ef678fc
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/sceneparsers/gltf/gltfio.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/plugins/sceneparsers/gltf/gltfio.cpp b/src/plugins/sceneparsers/gltf/gltfio.cpp index ec2ccb5a4..10afeb800 100644 --- a/src/plugins/sceneparsers/gltf/gltfio.cpp +++ b/src/plugins/sceneparsers/gltf/gltfio.cpp @@ -913,9 +913,6 @@ void GLTFIO::processJSONShader(const QString &id, const QJsonObject &jsonObject) void GLTFIO::processJSONProgram(const QString &id, const QJsonObject &jsonObject) { - QShaderProgram* prog = new QShaderProgram; - prog->setObjectName(id); - QString fragName = jsonObject.value(KEY_FRAGMENT_SHADER).toString(), vertName = jsonObject.value(KEY_VERTEX_SHADER).toString(); if (!m_shaderPaths.contains(fragName) || !m_shaderPaths.contains(vertName)) { @@ -924,6 +921,8 @@ void GLTFIO::processJSONProgram(const QString &id, const QJsonObject &jsonObject return; } + QShaderProgram* prog = new QShaderProgram; + prog->setObjectName(id); prog->setFragmentShaderCode(QShaderProgram::loadSource(QUrl::fromLocalFile(m_shaderPaths[fragName]))); prog->setVertexShaderCode(QShaderProgram::loadSource(QUrl::fromLocalFile(m_shaderPaths[vertName]))); m_programs[id] = prog; |