aboutsummaryrefslogtreecommitdiffstats
path: root/src/particles/qquickv4particledata.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-10-21 09:57:58 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-29 10:38:59 +0100
commitaf22149dd8daf593182fec978f15dc1667c9cf8d (patch)
tree17334ae83a3015fd6ca535fb9d2e97b40e1da825 /src/particles/qquickv4particledata.cpp
parent2b996ca17fbc36029af3900933b6fcc1418afb6a (diff)
Avoid side effects when en exception has been thrown.
We don't want to check for exceptions after every single line on our runtime methods. A better way to handle this is to add the check in all methods that have direct side effects (as e.g. writing to a property of the JS stack). We also need to return whereever we throw an exception. To simplify the code, ExecutionContext::throwXxx methods now return a ReturnedValue (always undefined) for convenience. Change-Id: Ide6c804f819c731a3f14c6c43121d08029c9fb90 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/particles/qquickv4particledata.cpp')
-rw-r--r--src/particles/qquickv4particledata.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/particles/qquickv4particledata.cpp b/src/particles/qquickv4particledata.cpp
index 3cfce0ae90..0524a5a871 100644
--- a/src/particles/qquickv4particledata.cpp
+++ b/src/particles/qquickv4particledata.cpp
@@ -304,7 +304,7 @@ static QV4::ReturnedValue particleData_discard(QV4::SimpleCallContext *ctx)
QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject);
if (!r || !r->datum)
- ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
+ return ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
r->datum->lifeSpan = 0; //Don't kill(), because it could still be in the middle of being created
return QV4::Encode::undefined();
@@ -316,7 +316,7 @@ static QV4::ReturnedValue particleData_lifeLeft(QV4::SimpleCallContext *ctx)
QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject);
if (!r || !r->datum)
- ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
+ return ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
return QV4::Encode(r->datum->lifeLeft());
}
@@ -327,7 +327,7 @@ static QV4::ReturnedValue particleData_curSize(QV4::SimpleCallContext *ctx)
QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject);
if (!r || !r->datum)
- ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
+ return ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
return QV4::Encode(r->datum->curSize());
}