diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2009-09-09 08:37:57 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-09-09 08:43:19 (GMT) |
commit | bb6aee6989aadfa1bcf4b36f302540440b3acc93 (patch) | |
tree | 41577d058d095210d9cd29052f38f640d4b963b2 /src/3rdparty | |
parent | 2cb0292aaa2aa60dbfdcc0391753774bf3823151 (diff) | |
download | Qt-bb6aee6989aadfa1bcf4b36f302540440b3acc93.zip Qt-bb6aee6989aadfa1bcf4b36f302540440b3acc93.tar.gz Qt-bb6aee6989aadfa1bcf4b36f302540440b3acc93.tar.bz2 |
Fix crash in QtScript with exceptions.
When trying to determine if there is a handler for an exception, determine
the returnPC for the call frame traversal frmo the corrent CallFrame object.
Reviewed-by: Kent Hansen
Diffstat (limited to 'src/3rdparty')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp index 3af4a29..c538eb1 100644 --- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp @@ -586,13 +586,14 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV unsigned bytecodeOffsetTemp = bytecodeOffset; CodeBlock *codeBlockTemp = codeBlock; while (!(handler = codeBlockTemp->handlerForBytecodeOffset(bytecodeOffsetTemp))) { + void* returnPC = callFrameTemp->returnPC(); callFrameTemp = callFrameTemp->callerFrame(); if (callFrameTemp->hasHostCallFrameFlag()) { hasHandler = false; break; } else { codeBlockTemp = callFrameTemp->codeBlock(); - bytecodeOffsetTemp = bytecodeOffsetForPC(callFrameTemp, codeBlockTemp, callFrameTemp->returnPC()); + bytecodeOffsetTemp = bytecodeOffsetForPC(callFrameTemp, codeBlockTemp, returnPC); } } if (debugger) |