diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-11-23 12:55:30 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-11-24 12:28:22 +0000 |
commit | 5e6bf607ee1e466eebabb7b8114c9f5e8fc40a9e (patch) | |
tree | a4264d80b86a7d2c69a99499a55e177633fa8a28 /src/qml/jsruntime/qv4runtimeapi_p.h | |
parent | 4b22e2093f08fb66107af4dbd8138cf9526c5786 (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.h | 9 |
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)); |