aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4runtimeapi_p.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@qt.io>2016-11-23 12:55:30 +0100
committerErik Verbruggen <erik.verbruggen@qt.io>2016-11-24 12:28:22 +0000
commit5e6bf607ee1e466eebabb7b8114c9f5e8fc40a9e (patch)
treea4264d80b86a7d2c69a99499a55e177633fa8a28 /src/qml/jsruntime/qv4runtimeapi_p.h
parent4b22e2093f08fb66107af4dbd8138cf9526c5786 (diff)
V4: check for exceptions after convertThisToObject
The method_convertThisToObject method was invalidly tagged as not needing exception checks. As a side-effect method_pushCatchScope and method_popScope are now correctly tagged with a NoThrowEngine. Change-Id: I11d987e62136216a29eadcbd641546311030058f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4runtimeapi_p.h')
-rw-r--r--src/qml/jsruntime/qv4runtimeapi_p.h9
1 files changed, 2 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4runtimeapi_p.h b/src/qml/jsruntime/qv4runtimeapi_p.h
index 040a545b83..e06a3f5ec2 100644
--- a/src/qml/jsruntime/qv4runtimeapi_p.h
+++ b/src/qml/jsruntime/qv4runtimeapi_p.h
@@ -63,11 +63,6 @@ template <typename T>
struct ExceptionCheck {
enum { NeedsCheck = 1 };
};
-// push_catch and pop context methods shouldn't check for exceptions
-template <>
-struct ExceptionCheck<void (*)(QV4::ExecutionEngine *)> {
- enum { NeedsCheck = 0 };
-};
template <typename A>
struct ExceptionCheck<void (*)(A, QV4::NoThrowEngine)> {
enum { NeedsCheck = 0 };
@@ -244,9 +239,9 @@ struct Q_QML_PRIVATE_EXPORT Runtime {
// exceptions & scopes
RUNTIME_METHOD(void, throwException, (ExecutionEngine *engine, const Value &value));
RUNTIME_METHOD(ReturnedValue, unwindException, (ExecutionEngine *engine));
- RUNTIME_METHOD(void, pushWithScope, (const Value &o, ExecutionEngine *engine));
+ RUNTIME_METHOD(void, pushWithScope, (const Value &o, NoThrowEngine *engine));
RUNTIME_METHOD(void, pushCatchScope, (NoThrowEngine *engine, int exceptionVarNameIndex));
- RUNTIME_METHOD(void, popScope, (ExecutionEngine *engine));
+ RUNTIME_METHOD(void, popScope, (NoThrowEngine *engine));
// closures
RUNTIME_METHOD(ReturnedValue, closure, (ExecutionEngine *engine, int functionId));