]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Python 3.4: redefine Py_DecodeLocale
authorGilles DAVID <gilles-g.david@edf.fr>
Thu, 23 Mar 2017 09:03:25 +0000 (10:03 +0100)
committerGilles DAVID <gilles-g.david@edf.fr>
Thu, 23 Mar 2017 09:03:25 +0000 (10:03 +0100)
src/SUITApp/SUITApp_init_python.cxx
tools/PyInterp/src/PyInterp_Interp.cxx

index 06d2b8af00b1bd766c6643ac4c78bfcead39f675..7f5d7021c615fdec6cdc78e318dec148ba076a59 100644 (file)
 #include "SUITApp_init_python.hxx"
 #include <QString>
 
+#if PY_VERSION_HEX < 0x03050000
+static wchar_t*
+Py_DecodeLocale(const char *arg, size_t *size)
+{
+    wchar_t *res;
+    unsigned char *in;
+    wchar_t *out;
+    size_t argsize = strlen(arg) + 1;
+
+    if (argsize > PY_SSIZE_T_MAX/sizeof(wchar_t))
+        return NULL;
+    res = (wchar_t*) PyMem_RawMalloc(argsize*sizeof(wchar_t));
+    if (!res)
+        return NULL;
+
+    in = (unsigned char*)arg;
+    out = res;
+    while(*in)
+        if(*in < 128)
+            *out++ = *in++;
+        else
+            *out++ = 0xdc00 + *in++;
+    *out = 0;
+    if (size != NULL)
+        *size = out - res;
+    return res;
+}
+#endif
+
 bool SUIT_PYTHON::initialized                       = false;
 
 void SUIT_PYTHON::init_python(int argc, char **argv)
index 27703c2a010cf94a6e927a1659d28893d35eb055..4b8f8fe766059122c01860a840952a648c83c1d3 100644 (file)
 #define TOP_HISTORY_PY   "--- top of history ---"
 #define BEGIN_HISTORY_PY "--- begin of history ---"
 
+#if PY_VERSION_HEX < 0x03050000
+static wchar_t*
+Py_DecodeLocale(const char *arg, size_t *size)
+{
+    wchar_t *res;
+    unsigned char *in;
+    wchar_t *out;
+    size_t argsize = strlen(arg) + 1;
+
+    if (argsize > PY_SSIZE_T_MAX/sizeof(wchar_t))
+        return NULL;
+    res = (wchar_t*) PyMem_RawMalloc(argsize*sizeof(wchar_t));
+    if (!res)
+        return NULL;
+
+    in = (unsigned char*)arg;
+    out = res;
+    while(*in)
+        if(*in < 128)
+            *out++ = *in++;
+        else
+            *out++ = 0xdc00 + *in++;
+    *out = 0;
+    if (size != NULL)
+        *size = out - res;
+    return res;
+}
+#endif
+
 /*
   The following functions are used to hook the Python
   interpreter output.