| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.581 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.581 |
| Problem: Problems compiling with Python. |
| Solution: Pick UCS2 or UCS4 function at runtime. (lilydjwg) |
| Files: src/if_python.c |
| |
| |
| |
| |
| |
| *** 196,202 **** |
| # define PyString_Size dll_PyString_Size |
| # define PyString_Type (*dll_PyString_Type) |
| # define PyUnicode_Type (*dll_PyUnicode_Type) |
| ! # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString) |
| # define PyFloat_AsDouble dll_PyFloat_AsDouble |
| # define PyFloat_FromDouble dll_PyFloat_FromDouble |
| # define PyFloat_Type (*dll_PyFloat_Type) |
| --- 196,203 ---- |
| # define PyString_Size dll_PyString_Size |
| # define PyString_Type (*dll_PyString_Type) |
| # define PyUnicode_Type (*dll_PyUnicode_Type) |
| ! # undef PyUnicode_AsEncodedString |
| ! # define PyUnicode_AsEncodedString py_PyUnicode_AsEncodedString |
| # define PyFloat_AsDouble dll_PyFloat_AsDouble |
| # define PyFloat_FromDouble dll_PyFloat_FromDouble |
| # define PyFloat_Type (*dll_PyFloat_Type) |
| |
| *** 290,296 **** |
| static PyInt(*dll_PyString_Size)(PyObject *); |
| static PyTypeObject* dll_PyString_Type; |
| static PyTypeObject* dll_PyUnicode_Type; |
| ! static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *); |
| static double(*dll_PyFloat_AsDouble)(PyObject *); |
| static PyObject*(*dll_PyFloat_FromDouble)(double); |
| static PyTypeObject* dll_PyFloat_Type; |
| --- 291,297 ---- |
| static PyInt(*dll_PyString_Size)(PyObject *); |
| static PyTypeObject* dll_PyString_Type; |
| static PyTypeObject* dll_PyUnicode_Type; |
| ! static PyObject *(*py_PyUnicode_AsEncodedString)(PyObject *, char *, char *); |
| static double(*dll_PyFloat_AsDouble)(PyObject *); |
| static PyObject*(*dll_PyFloat_FromDouble)(double); |
| static PyTypeObject* dll_PyFloat_Type; |
| |
| *** 406,412 **** |
| {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, |
| {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type}, |
| {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type}, |
| - {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString}, |
| {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type}, |
| {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble}, |
| {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble}, |
| --- 407,412 ---- |
| |
| *** 471,476 **** |
| --- 471,477 ---- |
| python_runtime_link_init(char *libname, int verbose) |
| { |
| int i; |
| + void *ucs_as_encoded_string; |
| |
| #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3) |
| /* Can't have Python and Python3 loaded at the same time. |
| |
| *** 506,511 **** |
| --- 507,531 ---- |
| return FAIL; |
| } |
| } |
| + |
| + /* Load unicode functions separately as only the ucs2 or the ucs4 functions |
| + * will be present in the library. */ |
| + ucs_as_encoded_string = symbol_from_dll(hinstPython, |
| + "PyUnicodeUCS2_AsEncodedString"); |
| + if (ucs_as_encoded_string == NULL) |
| + ucs_as_encoded_string = symbol_from_dll(hinstPython, |
| + "PyUnicodeUCS4_AsEncodedString"); |
| + if (ucs_as_encoded_string != NULL) |
| + py_PyUnicode_AsEncodedString = ucs_as_encoded_string; |
| + else |
| + { |
| + close_dll(hinstPython); |
| + hinstPython = 0; |
| + if (verbose) |
| + EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*"); |
| + return FAIL; |
| + } |
| + |
| return OK; |
| } |
| |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 581, |
| /**/ |
| |
| -- |
| ASCII stupid question, get a stupid ANSI. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |