summaryrefslogtreecommitdiff
path: root/src/lib/corelib/language/scriptengine.cpp
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2023-05-16 01:32:37 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2023-05-16 10:37:54 +0000
commitce626e5e919cabb32a7fa1be35025837196b8204 (patch)
treeb96320c45b1b2d460a37694977a4777169c30735 /src/lib/corelib/language/scriptengine.cpp
parent4e8e1b2719b84a7371acafc311fc74b10ff36362 (diff)
downloadqbs-ce626e5e919cabb32a7fa1be35025837196b8204.tar.gz
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 <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/scriptengine.cpp')
-rw-r--r--src/lib/corelib/language/scriptengine.cpp6
1 files changed, 6 insertions, 0 deletions
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<const uint8_t *>(s.constData()), s.size());
+}
+
JSValue ScriptEngine::asJsValue(const QString &s)
{
const auto it = m_stringCache.constFind(s);