To: vim_dev@googlegroups.com Subject: Patch 7.3.584 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.584 Problem: PyCObject is not always defined. Solution: Use PyObject instead. Files: src/if_py_both.h, src/if_python.c *** ../vim-7.3.583/src/if_py_both.h 2012-06-29 17:51:58.000000000 +0200 --- src/if_py_both.h 2012-06-30 13:25:24.000000000 +0200 *************** *** 2432,2463 **** convert_dl(PyObject *obj, typval_T *tv, pytotvfunc py_to_tv, PyObject *lookupDict) { - # ifdef PY_USE_CAPSULE PyObject *capsule; - # else - PyCObject *cobject; - # endif char hexBuf[sizeof(void *) * 2 + 3]; sprintf(hexBuf, "%p", obj); # ifdef PY_USE_CAPSULE capsule = PyDict_GetItemString(lookupDict, hexBuf); - if (capsule == NULL) # else ! cobject = (PyCObject *)PyDict_GetItemString(lookupDict, hexBuf); ! if (cobject == NULL) # endif { # ifdef PY_USE_CAPSULE capsule = PyCapsule_New(tv, NULL, NULL); - PyDict_SetItemString(lookupDict, hexBuf, capsule); - Py_DECREF(capsule); # else ! cobject = PyCObject_FromVoidPtr(tv, NULL); ! PyDict_SetItemString(lookupDict, hexBuf, cobject); ! Py_DECREF(cobject); # endif if (py_to_tv(obj, tv, lookupDict) == -1) { tv->v_type = VAR_UNKNOWN; --- 2432,2456 ---- convert_dl(PyObject *obj, typval_T *tv, pytotvfunc py_to_tv, PyObject *lookupDict) { PyObject *capsule; char hexBuf[sizeof(void *) * 2 + 3]; sprintf(hexBuf, "%p", obj); # ifdef PY_USE_CAPSULE capsule = PyDict_GetItemString(lookupDict, hexBuf); # else ! capsule = (PyObject *)PyDict_GetItemString(lookupDict, hexBuf); # endif + if (capsule == NULL) { # ifdef PY_USE_CAPSULE capsule = PyCapsule_New(tv, NULL, NULL); # else ! capsule = PyCObject_FromVoidPtr(tv, NULL); # endif + PyDict_SetItemString(lookupDict, hexBuf, capsule); + Py_DECREF(capsule); if (py_to_tv(obj, tv, lookupDict) == -1) { tv->v_type = VAR_UNKNOWN; *************** *** 2478,2484 **** # ifdef PY_USE_CAPSULE v = PyCapsule_GetPointer(capsule, NULL); # else ! v = PyCObject_AsVoidPtr(cobject); # endif copy_tv(v, tv); } --- 2471,2477 ---- # ifdef PY_USE_CAPSULE v = PyCapsule_GetPointer(capsule, NULL); # else ! v = PyCObject_AsVoidPtr(capsule); # endif copy_tv(v, tv); } *** ../vim-7.3.583/src/if_python.c 2012-06-30 13:21:03.000000000 +0200 --- src/if_python.c 2012-06-30 13:23:22.000000000 +0200 *************** *** 327,334 **** static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); # else ! static PyCObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); ! static void* (*dll_PyCObject_AsVoidPtr)(PyCObject *); # endif static HINSTANCE hinstPython = 0; /* Instance of python.dll */ --- 327,334 ---- static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); static void* (*dll_PyCapsule_GetPointer)(PyObject *, char *); # else ! static PyObject* (*dll_PyCObject_FromVoidPtr)(void *cobj, void (*destr)(void *)); ! static void* (*dll_PyCObject_AsVoidPtr)(PyObject *); # endif static HINSTANCE hinstPython = 0; /* Instance of python.dll */ *** ../vim-7.3.583/src/version.c 2012-06-30 13:21:03.000000000 +0200 --- src/version.c 2012-06-30 13:33:08.000000000 +0200 *************** *** 716,717 **** --- 716,719 ---- { /* Add new patch number below this line */ + /**/ + 584, /**/ -- hundred-and-one symptoms of being an internet addict: 91. It's Saturday afternoon in the middle of May and you are on computer. /// 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 ///