summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/script/api/qscriptengine_p.h2
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp9
2 files changed, 11 insertions, 0 deletions
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index df52ee8..6c82522 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -1031,6 +1031,8 @@ inline quint16 QScriptEnginePrivate::toUInt16(JSC::ExecState *exec, JSC::JSValue
inline JSC::UString QScriptEnginePrivate::toString(JSC::ExecState *exec, JSC::JSValue value)
{
+ if (!value)
+ return JSC::UString();
JSC::JSValue savedException;
saveException(exec, &savedException);
JSC::UString str = value.toString(exec);
diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index bd2b736..23ab8ef 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -247,6 +247,7 @@ private slots:
void dateRoundtripQtJSQt();
void dateConversionJSQt();
void dateConversionQtJS();
+ void stringListFromArrayWithEmptyElement();
};
tst_QScriptEngine::tst_QScriptEngine()
@@ -6133,5 +6134,13 @@ void tst_QScriptEngine::scriptValueFromQMetaObject()
}
}
+// QTBUG-21896
+void tst_QScriptEngine::stringListFromArrayWithEmptyElement()
+{
+ QScriptEngine eng;
+ QCOMPARE(qscriptvalue_cast<QStringList>(eng.evaluate("[,'hello']")),
+ QStringList() << "" << "hello");
+}
+
QTEST_MAIN(tst_QScriptEngine)
#include "tst_qscriptengine.moc"