diff options
-rw-r--r-- | src/imports/localstorage/plugin.cpp | 16 | ||||
-rw-r--r-- | src/qml/qml/qqmlvme.cpp | 1 |
2 files changed, 4 insertions, 13 deletions
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp index 7ce4f43b9d..998155d29a 100644 --- a/src/imports/localstorage/plugin.cpp +++ b/src/imports/localstorage/plugin.cpp @@ -343,11 +343,9 @@ static QV4::Value qmlsqldatabase_changeVersion(const v8::Arguments& args) QV4::Value callbackArgs[] = { instance->v4Value() }; QV4::FunctionObject *f = callback->v4Value().asFunctionObject(); - QV4::ExecutionContext *ctx = f->engine()->current; try { f->call(engine->global(), callbackArgs, 1); - } catch (QV4::Exception &e) { - e.accept(ctx); + } catch (QV4::Exception &) { db.rollback(); throw; } @@ -397,12 +395,10 @@ static QV4::Value qmlsqldatabase_transaction_shared(const v8::Arguments& args, b db.transaction(); QV4::FunctionObject *f = callback->v4Value().asFunctionObject(); if (f) { - QV4::ExecutionContext *ctx = f->engine()->current; QV4::Value callbackArgs[] = { instance->v4Value() }; try { f->call(engine->global(), callbackArgs, 1); - } catch (QV4::Exception &e) { - e.accept(ctx); + } catch (QV4::Exception &) { q->inTransaction = false; db.rollback(); throw; @@ -684,14 +680,8 @@ void QQuickLocalStorage::openDatabaseSync(QQmlV4Function *args) if (created) { QV4::FunctionObject *f = dbcreationCallback->v4Value().asFunctionObject(); if (f) { - QV4::ExecutionContext *ctx = f->engine()->current; QV4::Value args[] = { instance->v4Value() }; - try { - f->call(engine->global(), args, 1); - } catch (QV4::Exception &e) { - e.accept(ctx); - throw; - } + f->call(engine->global(), args, 1); } } diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp index af4394b44b..6636e602af 100644 --- a/src/qml/qml/qqmlvme.cpp +++ b/src/qml/qml/qqmlvme.cpp @@ -1245,6 +1245,7 @@ QV4::PersistentValue QQmlVME::run(QQmlContextData *parentCtxt, QQmlScriptData *s try { script->m_program->Run(qmlglobal); } catch (QV4::Exception &e) { + e.accept(ctx); QQmlError error; QQmlExpressionPrivate::exceptionToError(e, error); if (error.isValid()) |