summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-05-02 14:58:47 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-05-05 17:32:23 +0000
commitb5490d74e339f812350db4322479a5bab6c80e40 (patch)
tree8a3de12441e0b80669ba0403f571e95f66797d96 /src/plugins
parentb76bc40c960b67b6b35aa809bffc5ef0232b7d13 (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.cpp5
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;