diff options
-rw-r--r-- | src/script/api/qscriptengine_p.h | 2 | ||||
-rw-r--r-- | tests/auto/qscriptengine/tst_qscriptengine.cpp | 9 |
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" |