diff --git a/7.3.688 b/7.3.688 new file mode 100644 index 0000000..56f0024 --- /dev/null +++ b/7.3.688 @@ -0,0 +1,150 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.688 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.688 +Problem: Python 3.3 is not supported. +Solution: Add Python 3.3 support (Ken Takata) +Files: src/if_python3.c + + +*** ../vim-7.3.687/src/if_python3.c 2012-09-21 14:00:05.000000000 +0200 +--- src/if_python3.c 2012-10-14 03:19:53.000000000 +0200 +*************** +*** 174,180 **** + # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) + # define PyModule_AddObject py3_PyModule_AddObject + # define PyImport_AppendInittab py3_PyImport_AppendInittab +! # define _PyUnicode_AsString py3__PyUnicode_AsString + # undef PyUnicode_AsEncodedString + # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString + # undef PyBytes_AsString +--- 174,185 ---- + # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) + # define PyModule_AddObject py3_PyModule_AddObject + # define PyImport_AppendInittab py3_PyImport_AppendInittab +! # 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,287 **** +--- 286,296 ---- + 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,403 **** +--- 406,416 ---- + {"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,495 **** +--- 503,514 ---- + + /* 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,509 **** +--- 523,529 ---- + 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,607 **** + + #define GET_ATTR_STRING(name, nameobj) \ + char *name = ""; \ +! if(PyUnicode_Check(nameobj)) \ +! name = _PyUnicode_AsString(nameobj) + + #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) + +--- 620,627 ---- + + #define GET_ATTR_STRING(name, nameobj) \ + char *name = ""; \ +! if (PyUnicode_Check(nameobj)) \ +! name = _PyUnicode_AsString(nameobj) + + #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) + +*************** +*** 704,709 **** +--- 724,731 ---- + Py_SetPythonHome(PYTHON3_HOME); + #endif + ++ PyImport_AppendInittab("vim", Py3Init_vim); ++ + #if !defined(MACOS) || defined(MACOS_X_UNIX) + Py_Initialize(); + #else +*************** +*** 719,726 **** + 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 +--- 741,746 ---- +*** ../vim-7.3.687/src/version.c 2012-10-11 04:44:26.000000000 +0200 +--- src/version.c 2012-10-14 03:00:57.000000000 +0200 +*************** +*** 721,722 **** +--- 721,724 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 688, + /**/ + +-- +The problem with political jokes is that they get elected. + + /// 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 ///