diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-01-20 01:14:52 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-01-20 01:14:52 (GMT) |
commit | 91a2da396fb476401e3b2c55ca7672a8b462ceca (patch) | |
tree | dc944bf7d6df0fc0e2b0bad290396084626dd898 /src/script | |
parent | 530fd3831f012337d7460c4387ce82083ab3e144 (diff) | |
parent | 5f92bc9dd9f05f4824711b03406bdbe222ff73e9 (diff) | |
download | Qt-91a2da396fb476401e3b2c55ca7672a8b462ceca.zip Qt-91a2da396fb476401e3b2c55ca7672a8b462ceca.tar.gz Qt-91a2da396fb476401e3b2c55ca7672a8b462ceca.tar.bz2 |
Merge branch '4.6' of ../qt into kinetic-declarativeui
Conflicts:
src/corelib/kernel/qobject.cpp
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/bridge/qscriptqobject.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 3f4f6bb..db312bc 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -2220,7 +2220,14 @@ void QObjectConnectionManager::execute(int slotIndex, void **argv) JSC::call(exec, slot, callType, callData, thisObject, jscArgs); if (exec->hadException()) { - engine->emitSignalHandlerException(); + if (slot.inherits(&QtFunction::info) && !static_cast<QtFunction*>(JSC::asObject(slot))->qobject()) { + // The function threw an error because the target QObject has been deleted. + // The connections list is stale; remove the signal handler and ignore the exception. + removeSignalHandler(sender(), signalIndex, receiver, slot); + exec->clearException(); + } else { + engine->emitSignalHandlerException(); + } } } |