summaryrefslogtreecommitdiffstats
path: root/src/script
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2011-02-03 11:28:27 (GMT)
committerKent Hansen <kent.hansen@nokia.com>2011-02-03 12:37:48 (GMT)
commit147df10403ba280b3f04c1e3d6c4b1cf386abe5d (patch)
tree4a7c906928fa514a245891920fca98c097c59b1c /src/script
parent940d30e9cd76e9b98dd04c2e25a27b6a90bb34b9 (diff)
downloadQt-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.cpp3
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();