diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2011-02-03 11:28:27 (GMT) |
---|---|---|
committer | Kent Hansen <kent.hansen@nokia.com> | 2011-02-03 12:37:48 (GMT) |
commit | 147df10403ba280b3f04c1e3d6c4b1cf386abe5d (patch) | |
tree | 4a7c906928fa514a245891920fca98c097c59b1c /src/script | |
parent | 940d30e9cd76e9b98dd04c2e25a27b6a90bb34b9 (diff) | |
download | Qt-147df10403ba280b3f04c1e3d6c4b1cf386abe5d.zip Qt-147df10403ba280b3f04c1e3d6c4b1cf386abe5d.tar.gz Qt-147df10403ba280b3f04c1e3d6c4b1cf386abe5d.tar.bz2 |
Don't crash when creating backtrace for built-in JS function
When the JIT is enabled, NativeFunctionWrapper (used for
built-in functions such as Array.prototype.forEach) inherits
JSFunction, so we must check whether the function is
actually a JS (script) function before we start accessing
script-specific properties.
Task-number: QTBUG-17137
Reviewed-by: Olivier Goffart
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/api/qscriptcontextinfo.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/script/api/qscriptcontextinfo.cpp b/src/script/api/qscriptcontextinfo.cpp index db6b2d7..d39abe6 100644 --- a/src/script/api/qscriptcontextinfo.cpp +++ b/src/script/api/qscriptcontextinfo.cpp @@ -181,7 +181,8 @@ QScriptContextInfoPrivate::QScriptContextInfoPrivate(const QScriptContext *conte JSC::JSObject *callee = frame->callee(); if (callee && callee->inherits(&JSC::InternalFunction::info)) functionName = JSC::asInternalFunction(callee)->name(frame); - if (callee && callee->inherits(&JSC::JSFunction::info)) { + if (callee && callee->inherits(&JSC::JSFunction::info) + && !JSC::asFunction(callee)->isHostFunction()) { functionType = QScriptContextInfo::ScriptFunction; JSC::FunctionExecutable *body = JSC::asFunction(callee)->jsExecutable(); functionStartLineNumber = body->lineNo(); |