diff options
-rw-r--r-- | src/if_python3.c | 30 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/if_python3.c b/src/if_python3.c index 302be7ece..ea59a4233 100644 --- a/src/if_python3.c +++ b/src/if_python3.c @@ -174,7 +174,12 @@ static void init_structs(void); # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) # define PyModule_AddObject py3_PyModule_AddObject # define PyImport_AppendInittab py3_PyImport_AppendInittab -# define _PyUnicode_AsString py3__PyUnicode_AsString +# if PY_VERSION_HEX >= 0x030300f0 +# undef _PyUnicode_AsString +# define _PyUnicode_AsString py3_PyUnicode_AsUTF8String +# else +# define _PyUnicode_AsString py3__PyUnicode_AsString +# endif # undef PyUnicode_AsEncodedString # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString # undef PyBytes_AsString @@ -281,7 +286,11 @@ static PyObject* py3__Py_FalseStruct; static PyObject* py3__Py_TrueStruct; static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); +#if PY_VERSION_HEX >= 0x030300f0 +static char* (*py3_PyUnicode_AsUTF8String)(PyObject *unicode); +#else static char* (*py3__PyUnicode_AsString)(PyObject *unicode); +#endif static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); static char* (*py3_PyBytes_AsString)(PyObject *bytes); static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); @@ -397,7 +406,11 @@ static struct {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, +#if PY_VERSION_HEX >= 0x030300f0 + {"PyUnicode_AsUTF8String", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8String}, +#else {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, +#endif {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, @@ -490,6 +503,12 @@ py3_runtime_link_init(char *libname, int verbose) /* Load unicode functions separately as only the ucs2 or the ucs4 functions * will be present in the library. */ +#if PY_VERSION_HEX >= 0x030300f0 + ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString"); + ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode"); + ucs_as_encoded_string = symbol_from_dll(hinstPy3, + "PyUnicode_AsEncodedString"); +#else ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); ucs_decode = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_Decode"); @@ -504,6 +523,7 @@ py3_runtime_link_init(char *libname, int verbose) ucs_as_encoded_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS4_AsEncodedString"); } +#endif if (ucs_from_string && ucs_decode && ucs_as_encoded_string) { py3_PyUnicode_FromString = ucs_from_string; @@ -600,8 +620,8 @@ static int py3initialised = 0; #define GET_ATTR_STRING(name, nameobj) \ char *name = ""; \ - if(PyUnicode_Check(nameobj)) \ - name = _PyUnicode_AsString(nameobj) + if (PyUnicode_Check(nameobj)) \ + name = _PyUnicode_AsString(nameobj) #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) @@ -704,6 +724,8 @@ Python3_Init(void) Py_SetPythonHome(PYTHON3_HOME); #endif + PyImport_AppendInittab("vim", Py3Init_vim); + #if !defined(MACOS) || defined(MACOS_X_UNIX) Py_Initialize(); #else @@ -719,8 +741,6 @@ Python3_Init(void) if (PythonIO_Init()) goto fail; - PyImport_AppendInittab("vim", Py3Init_vim); - globals = PyModule_GetDict(PyImport_AddModule("__main__")); /* Remove the element from sys.path that was added because of our diff --git a/src/version.c b/src/version.c index 7be65c6be..d512955fa 100644 --- a/src/version.c +++ b/src/version.c @@ -720,6 +720,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 688, +/**/ 687, /**/ 686, |