summaryrefslogtreecommitdiffstats
path: root/cppuhelper/source/bootstrap.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cppuhelper/source/bootstrap.cxx')
-rw-r--r--cppuhelper/source/bootstrap.cxx13
1 files changed, 10 insertions, 3 deletions
diff --git a/cppuhelper/source/bootstrap.cxx b/cppuhelper/source/bootstrap.cxx
index 55a0d244b724..923d0e925795 100644
--- a/cppuhelper/source/bootstrap.cxx
+++ b/cppuhelper/source/bootstrap.cxx
@@ -87,21 +87,28 @@ Reference< XComponentContext > SAL_CALL bootstrap()
try
{
- char const * p1 = cppuhelper_detail_findSofficePath();
+ auto* p1 = cppuhelper_detail_findSofficePath();
if (p1 == nullptr) {
throw BootstrapException(
"no soffice installation found!");
}
rtl::OUString p2;
- if (!rtl_convertStringToUString(
+#if defined(_WIN32)
+ p2 = SAL_U(p1);
+ free(p1);
+#else
+ bool bOk = rtl_convertStringToUString(
&p2.pData, p1, std::strlen(p1), osl_getThreadTextEncoding(),
(RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR |
RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR |
- RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR)))
+ RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR));
+ free(p1);
+ if (!bOk)
{
throw BootstrapException(
"bad characters in soffice installation path!");
}
+#endif
OUString path;
if (osl::FileBase::getFileURLFromSystemPath(p2, path) !=
osl::FileBase::E_None)