From ce626e5e919cabb32a7fa1be35025837196b8204 Mon Sep 17 00:00:00 2001 From: Ivan Komissarov Date: Tue, 16 May 2023 01:32:37 +0300 Subject: js: represent QByteArray as JsArrayBuffer On macOS, Info.plist can (rarely) contain binary data which is parsed into a QByteArray. However, since byte arrays were discarded when converting from variant, such keys were lost e.g. when doing plist merging. Fix that by converting QByteArray to a JS ArrayBuffer object. Using such types is a bit awkward as seen in the testcase, but conforms JS type system. Change-Id: I7a680aa7943ba3bde1ddf4ac84e3485fb0ba01d8 Reviewed-by: Christian Kandeler --- src/lib/corelib/language/scriptengine.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/lib/corelib/language/scriptengine.cpp') diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp index 58c2817c6..6a67c1228 100644 --- a/src/lib/corelib/language/scriptengine.cpp +++ b/src/lib/corelib/language/scriptengine.cpp @@ -481,6 +481,12 @@ void ScriptEngine::addInternalExtension(const char *name, JSValue ext) m_internalExtensions.insert(QLatin1String(name), JS_DupValue(m_context, ext)); } +JSValue ScriptEngine::asJsValue(const QByteArray &s) +{ + return JS_NewArrayBufferCopy( + m_context, reinterpret_cast(s.constData()), s.size()); +} + JSValue ScriptEngine::asJsValue(const QString &s) { const auto it = m_stringCache.constFind(s); -- cgit v1.2.1