[Libreoffice-commits] core.git: pyuno/source
Mike Kaganski (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jan 1 17:03:41 UTC 2021
pyuno/source/loader/pyuno_loader.cxx | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
New commits:
commit cbe9a0a815e4a73bf8db425a7c5c651e67b2ed65
Author: Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Mon Dec 28 19:23:10 2020 +0300
Commit: Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Fri Jan 1 18:03:00 2021 +0100
Use Unicode paths on Windows for pyuno
No need to convert to 8-byte string only to convert back to UTF-16.
No idea if this has some logic on Linux, so only changing Windows.
Change-Id: I87b7f25e5b1a2dd07ac3354f8f065485949ef229
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108480
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
diff --git a/pyuno/source/loader/pyuno_loader.cxx b/pyuno/source/loader/pyuno_loader.cxx
index a8722dd835bb..1337ea8c78f9 100644
--- a/pyuno/source/loader/pyuno_loader.cxx
+++ b/pyuno/source/loader/pyuno_loader.cxx
@@ -23,6 +23,7 @@
#include <pyuno.hxx>
#include <o3tl/any.hxx>
+#include <o3tl/char16_t2wchar_t.hxx>
#include <osl/process.h>
#include <osl/file.hxx>
@@ -109,16 +110,22 @@ static void setPythonHome ( const OUString & pythonHome )
{
OUString systemPythonHome;
osl_getSystemPathFromFileURL( pythonHome.pData, &(systemPythonHome.pData) );
- OString o = OUStringToOString( systemPythonHome, osl_getThreadTextEncoding() );
// static because Py_SetPythonHome just copies the "wide" pointer
static wchar_t wide[PATH_MAX + 1];
+#if defined _WIN32
+ const size_t len = systemPythonHome.getLength();
+ if (len < std::size(wide))
+ wcsncpy(wide, o3tl::toW(systemPythonHome.getStr()), len + 1);
+#else
+ OString o = OUStringToOString(systemPythonHome, osl_getThreadTextEncoding());
size_t len = mbstowcs(wide, o.pData->buffer, PATH_MAX + 1);
+#endif
if(len == size_t(-1))
{
PyErr_SetString(PyExc_SystemError, "invalid multibyte sequence in python home path");
return;
}
- if(len == PATH_MAX + 1)
+ if(len >= PATH_MAX + 1)
{
PyErr_SetString(PyExc_SystemError, "python home path is too long");
return;
More information about the Libreoffice-commits
mailing list