]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.3.688 v7.3.688
authorBram Moolenaar <Bram@vim.org>
Sun, 14 Oct 2012 01:22:56 +0000 (03:22 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 14 Oct 2012 01:22:56 +0000 (03:22 +0200)
Problem:    Python 3.3 is not supported.
Solution:   Add Python 3.3 support (Ken Takata)

src/if_python3.c
src/version.c

index 302be7ece640b55780eb941599da0340bd1a87cc..ea59a4233ba681465adb62e3b351d1ab1d426002 100644 (file)
@@ -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
index 7be65c6be1af0a25aefe4b3b868db959e367dada..d512955faba31b1ce748c31329dedda6724a0a19 100644 (file)
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    688,
 /**/
     687,
 /**/