summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-09-05 18:29:59 +0200
committerStephan Bergmann <sbergman@redhat.com>2020-09-05 21:19:56 +0200
commit1bc728580364c626aa04df624e2afac8fa92890e (patch)
tree2d8e220e7f18ff10f4ddbf80758691b24a3f56e6 /shell
parentc6104462fbe11ae053155b5f6c2ec52d31f0481c (diff)
Improve QString to OUString conversion
...assuming the way of constructing an OUString from just a QString::utf16 pointer, ignoring QString::size, was not chosen deliberately to cut of the input string at a potential embedded NUL. (This change is a prerequisite for making the OUString ctor taking a raw pointer explicit.) Change-Id: I3fb3026065f0247c19f0497d28adf422106bd9c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102083 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/source/backends/kf5be/kf5access.cxx23
1 files changed, 16 insertions, 7 deletions
diff --git a/shell/source/backends/kf5be/kf5access.cxx b/shell/source/backends/kf5be/kf5access.cxx
index d983b6d308ca..27d047d640d1 100644
--- a/shell/source/backends/kf5be/kf5access.cxx
+++ b/shell/source/backends/kf5be/kf5access.cxx
@@ -45,6 +45,15 @@ namespace
namespace uno = css::uno;
}
+namespace
+{
+OUString fromQStringToOUString(QString const& s)
+{
+ // Conversion from QString size()'s int to OUString's sal_Int32 should be non-narrowing:
+ return { reinterpret_cast<char16_t const*>(s.utf16()), s.size() };
+}
+}
+
css::beans::Optional<css::uno::Any> getValue(OUString const& id)
{
if (id == "ExternalMailer")
@@ -58,7 +67,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
aClientProgram = QStringLiteral("kmail");
else
aClientProgram = aClientProgram.section(QLatin1Char(' '), 0, 0);
- sClientProgram = reinterpret_cast<const sal_Unicode*>(aClientProgram.utf16());
+ sClientProgram = fromQStringToOUString(aClientProgram);
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sClientProgram));
}
else if (id == "SourceViewFontHeight")
@@ -71,7 +80,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
{
const QFont aFixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);
const QString aFontName = aFixedFont.family();
- const OUString sFontName = reinterpret_cast<const sal_Unicode*>(aFontName.utf16());
+ const OUString sFontName = fromQStringToOUString(aFontName);
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sFontName));
}
else if (id == "EnableATToolSupport")
@@ -90,7 +99,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
OUString sDocumentsURL;
if (aDocumentsDir.endsWith(QLatin1Char('/')))
aDocumentsDir.truncate(aDocumentsDir.length() - 1);
- sDocumentsDir = reinterpret_cast<const sal_Unicode*>(aDocumentsDir.utf16());
+ sDocumentsDir = fromQStringToOUString(aDocumentsDir);
osl_getFileURLFromSystemPath(sDocumentsDir.pData, &sDocumentsURL.pData);
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sDocumentsURL));
}
@@ -117,7 +126,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
if (!aFTPProxy.isEmpty())
{
QUrl aProxy(aFTPProxy);
- OUString sProxy = reinterpret_cast<const sal_Unicode*>(aProxy.host().utf16());
+ OUString sProxy = fromQStringToOUString(aProxy.host());
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sProxy));
}
}
@@ -171,7 +180,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
if (!aHTTPProxy.isEmpty())
{
QUrl aProxy(aHTTPProxy);
- OUString sProxy = reinterpret_cast<const sal_Unicode*>(aProxy.host().utf16());
+ OUString sProxy = fromQStringToOUString(aProxy.host());
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sProxy));
}
}
@@ -225,7 +234,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
if (!aHTTPSProxy.isEmpty())
{
QUrl aProxy(aHTTPSProxy);
- OUString sProxy = reinterpret_cast<const sal_Unicode*>(aProxy.host().utf16());
+ OUString sProxy = fromQStringToOUString(aProxy.host());
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sProxy));
}
}
@@ -275,7 +284,7 @@ css::beans::Optional<css::uno::Any> getValue(OUString const& id)
OUString sNoProxyFor;
aNoProxyFor = aNoProxyFor.replace(QLatin1Char(','), QLatin1Char(';'));
- sNoProxyFor = reinterpret_cast<const sal_Unicode*>(aNoProxyFor.utf16());
+ sNoProxyFor = fromQStringToOUString(aNoProxyFor);
return css::beans::Optional<css::uno::Any>(true, uno::makeAny(sNoProxyFor));
}
}