[Libreoffice-commits] core.git: pyuno/source

Stephan Bergmann sbergman at redhat.com
Fri May 12 11:26:59 UTC 2017


 pyuno/source/module/pyuno_util.cxx |   22 +++++-----------------
 1 file changed, 5 insertions(+), 17 deletions(-)

New commits:
commit 3e78796433c40a99b6d95b0bcde844e0b1d2dc5f
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri May 12 13:26:15 2017 +0200

    Clean up uses of SAL_U/SAL_W: pyuno
    
    ...and clean up MACOSX specific code
    
    Change-Id: I1796b4b8f2695359557a5374b5d7592ccf8f86a6

diff --git a/pyuno/source/module/pyuno_util.cxx b/pyuno/source/module/pyuno_util.cxx
index 30e636ffe2a2..aecca4ad2eae 100644
--- a/pyuno/source/module/pyuno_util.cxx
+++ b/pyuno/source/module/pyuno_util.cxx
@@ -39,16 +39,11 @@ PyRef ustring2PyUnicode( const OUString & str )
 {
     PyRef ret;
 #if Py_UNICODE_SIZE == 2
-    // YD force conversion since python/2 uses wchar_t
 #ifdef MACOSX
-    // on Sierra, python 2.7 (builtin)
-    // no known conversion from 'const sal_Unicode *' (aka 'const char16_t *') to
-    // 'const Py_UNICODE *' (aka 'const unsigned short *')
-    // An explicit cast to sal_Unicode does not work
-    // Hack to avoid that error
-    ret = PyRef( PyUnicode_FromUnicode( (const unsigned short *)str.getStr(), str.getLength() ), SAL_NO_ACQUIRE );
+    ret = PyRef( PyUnicode_FromUnicode( reinterpret_cast<const unsigned short *>(str.getStr()), str.getLength() ), SAL_NO_ACQUIRE );
 #else
-    ret = PyRef( PyUnicode_FromUnicode( SAL_W(str.getStr()), str.getLength() ), SAL_NO_ACQUIRE );
+    static_assert(sizeof (wchar_t) == Py_UNICODE_SIZE, "bad assumption");
+    ret = PyRef( PyUnicode_FromUnicode( reinterpret_cast<wchar_t const *>(str.getStr()), str.getLength() ), SAL_NO_ACQUIRE );
 #endif
 #else
     OString sUtf8(OUStringToOString(str, RTL_TEXTENCODING_UTF8));
@@ -69,15 +64,8 @@ OUString pyString2ustring( PyObject *pystr )
     if( PyUnicode_Check( pystr ) )
     {
 #if Py_UNICODE_SIZE == 2
-#ifdef MACOSX
-    // on Sierra, python 2.7 (builtin)
-    // no known conversion from 'Py_UNICODE *' (aka 'unsigned short *') to
-    // 'sal_Unicode' (aka 'char16_t') for 1st argument
-    // Hack to avoid that error
-    ret = OUString( (sal_Unicode *)PyUnicode_AS_UNICODE( pystr ) );
-#else
-    ret = OUString( SAL_U(PyUnicode_AS_UNICODE( pystr )) );
-#endif
+    ret = OUString(
+        reinterpret_cast<sal_Unicode const *>(PyUnicode_AS_UNICODE( pystr )) );
 #else
 #if PY_MAJOR_VERSION >= 3
     Py_ssize_t size(0);


More information about the Libreoffice-commits mailing list