- patchlevel 579
This commit is contained in:
		
							parent
							
								
									8c68f20735
								
							
						
					
					
						commit
						36ff25c550
					
				
							
								
								
									
										232
									
								
								7.3.579
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										232
									
								
								7.3.579
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,232 @@ | ||||
| To: vim_dev@googlegroups.com | ||||
| Subject: Patch 7.3.579 | ||||
| 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.579 (after 7.3.569) | ||||
| Problem:    Can't compile with Python 2.5. | ||||
| Solution:   Use PyCObject when Capsules are not available. | ||||
| Files:	    src/if_py_both.h, src/if_python.c, src/if_python3.c | ||||
| 
 | ||||
| 
 | ||||
| *** ../vim-7.3.578/src/if_py_both.h	2012-06-29 16:19:46.000000000 +0200 | ||||
| --- src/if_py_both.h	2012-06-29 16:15:29.000000000 +0200 | ||||
| *************** | ||||
| *** 56,62 **** | ||||
|       /* name,	    function,		calling,    documentation */ | ||||
|       {"write",	    OutputWrite,	1,	    ""}, | ||||
|       {"writelines",  OutputWritelines,	1,	    ""}, | ||||
| !     {"flush",       OutputFlush,        1,          ""}, | ||||
|       { NULL,	    NULL,		0,	    NULL} | ||||
|   }; | ||||
|    | ||||
| --- 56,62 ---- | ||||
|       /* name,	    function,		calling,    documentation */ | ||||
|       {"write",	    OutputWrite,	1,	    ""}, | ||||
|       {"writelines",  OutputWritelines,	1,	    ""}, | ||||
| !     {"flush",	    OutputFlush,	1,	    ""}, | ||||
|       { NULL,	    NULL,		0,	    NULL} | ||||
|   }; | ||||
|    | ||||
| *************** | ||||
| *** 506,513 **** | ||||
|       /* name,	     function,		calling,    documentation */ | ||||
|       {"command",	     VimCommand,	1,	    "Execute a Vim ex-mode command" }, | ||||
|       {"eval",	     VimEval,		1,	    "Evaluate an expression using Vim evaluator" }, | ||||
| !     {"bindeval",     VimEvalPy,         1,          "Like eval(), but returns objects attached to vim ones"}, | ||||
| !     {"strwidth",     VimStrwidth,       1,          "Screen string width, counts <Tab> as having width 1"}, | ||||
|       { NULL,	     NULL,		0,	    NULL } | ||||
|   }; | ||||
|    | ||||
| --- 506,513 ---- | ||||
|       /* name,	     function,		calling,    documentation */ | ||||
|       {"command",	     VimCommand,	1,	    "Execute a Vim ex-mode command" }, | ||||
|       {"eval",	     VimEval,		1,	    "Evaluate an expression using Vim evaluator" }, | ||||
| !     {"bindeval",     VimEvalPy,		1,	    "Like eval(), but returns objects attached to vim ones"}, | ||||
| !     {"strwidth",     VimStrwidth,	1,	    "Screen string width, counts <Tab> as having width 1"}, | ||||
|       { NULL,	     NULL,		0,	    NULL } | ||||
|   }; | ||||
|    | ||||
| *************** | ||||
| *** 2432,2448 **** | ||||
| --- 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; | ||||
| *************** | ||||
| *** 2458,2464 **** | ||||
|       } | ||||
|       else | ||||
|       { | ||||
| ! 	typval_T	*v = PyCapsule_GetPointer(capsule, NULL); | ||||
|   	copy_tv(v, tv); | ||||
|       } | ||||
|       return 0; | ||||
| --- 2473,2485 ---- | ||||
|       } | ||||
|       else | ||||
|       { | ||||
| ! 	typval_T	*v; | ||||
| !  | ||||
| ! # ifdef PY_USE_CAPSULE | ||||
| ! 	v = PyCapsule_GetPointer(capsule, NULL); | ||||
| ! # else | ||||
| ! 	v = PyCObject_AsVoidPtr(cobject); | ||||
| ! # endif | ||||
|   	copy_tv(v, tv); | ||||
|       } | ||||
|       return 0; | ||||
| *** ../vim-7.3.578/src/if_python.c	2012-06-29 12:54:32.000000000 +0200 | ||||
| --- src/if_python.c	2012-06-29 16:17:44.000000000 +0200 | ||||
| *************** | ||||
| *** 71,76 **** | ||||
| --- 71,80 ---- | ||||
|   # define PySequenceMethods Py_ssize_t | ||||
|   #endif | ||||
|    | ||||
| + #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000 | ||||
| + # define PY_USE_CAPSULE | ||||
| + #endif | ||||
| +  | ||||
|   #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 | ||||
|   # define PyInt Py_ssize_t | ||||
|   # define PyInquiry lenfunc | ||||
| *************** | ||||
| *** 220,227 **** | ||||
|   #  define PyObject_Malloc dll_PyObject_Malloc | ||||
|   #  define PyObject_Free dll_PyObject_Free | ||||
|   # endif | ||||
| ! # define PyCapsule_New dll_PyCapsule_New | ||||
| ! # define PyCapsule_GetPointer dll_PyCapsule_GetPointer | ||||
|    | ||||
|   /* | ||||
|    * Pointers for dynamic link | ||||
| --- 224,236 ---- | ||||
|   #  define PyObject_Malloc dll_PyObject_Malloc | ||||
|   #  define PyObject_Free dll_PyObject_Free | ||||
|   # endif | ||||
| ! # ifdef PY_USE_CAPSULE | ||||
| ! #  define PyCapsule_New dll_PyCapsule_New | ||||
| ! #  define PyCapsule_GetPointer dll_PyCapsule_GetPointer | ||||
| ! # else | ||||
| ! #  define PyCObject_FromVoidPtr dll_PyCObject_FromVoidPtr | ||||
| ! #  define PyCObject_AsVoidPtr dll_PyCObject_AsVoidPtr | ||||
| ! # endif | ||||
|    | ||||
|   /* | ||||
|    * Pointers for dynamic link | ||||
| *************** | ||||
| *** 309,316 **** | ||||
| --- 318,330 ---- | ||||
|   static void* (*dll_PyObject_Malloc)(size_t); | ||||
|   static void (*dll_PyObject_Free)(void*); | ||||
|   # endif | ||||
| + # ifdef PY_USE_CAPSULE | ||||
|   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 */ | ||||
|    | ||||
| *************** | ||||
| *** 403,409 **** | ||||
|       {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, | ||||
|       {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, | ||||
|       {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, | ||||
| ! # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT | ||||
|       {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, | ||||
|   # else | ||||
|       {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, | ||||
| --- 417,424 ---- | ||||
|       {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, | ||||
|       {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue}, | ||||
|       {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, | ||||
| ! # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ | ||||
| ! 	&& SIZEOF_SIZE_T != SIZEOF_INT | ||||
|       {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, | ||||
|   # else | ||||
|       {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, | ||||
| *************** | ||||
| *** 424,431 **** | ||||
| --- 439,451 ---- | ||||
|       {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc}, | ||||
|       {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free}, | ||||
|   # endif | ||||
| + # ifdef PY_USE_CAPSULE | ||||
|       {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New}, | ||||
|       {"PyCapsule_GetPointer", (PYTHON_PROC*)&dll_PyCapsule_GetPointer}, | ||||
| + # else | ||||
| +     {"PyCObject_FromVoidPtr", (PYTHON_PROC*)&dll_PyCObject_FromVoidPtr}, | ||||
| +     {"PyCObject_AsVoidPtr", (PYTHON_PROC*)&dll_PyCObject_AsVoidPtr}, | ||||
| + # endif | ||||
|       {"", NULL}, | ||||
|   }; | ||||
|    | ||||
| *** ../vim-7.3.578/src/if_python3.c	2012-06-29 12:54:32.000000000 +0200 | ||||
| --- src/if_python3.c	2012-06-29 16:16:54.000000000 +0200 | ||||
| *************** | ||||
| *** 75,80 **** | ||||
| --- 75,83 ---- | ||||
|   # define CODEC_ERROR_HANDLER NULL | ||||
|   #endif | ||||
|    | ||||
| + /* Python 3 does not support CObjects, always use Capsules */ | ||||
| + #define PY_USE_CAPSULE | ||||
| +  | ||||
|   #define PyInt Py_ssize_t | ||||
|   #define PyString_Check(obj) PyUnicode_Check(obj) | ||||
|   #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER) | ||||
| *** ../vim-7.3.578/src/version.c	2012-06-29 16:19:46.000000000 +0200 | ||||
| --- src/version.c	2012-06-29 16:21:25.000000000 +0200 | ||||
| *************** | ||||
| *** 716,717 **** | ||||
| --- 716,719 ---- | ||||
|   {   /* Add new patch number below this line */ | ||||
| + /**/ | ||||
| +     579, | ||||
|   /**/ | ||||
| 
 | ||||
| --  | ||||
| hundred-and-one symptoms of being an internet addict: | ||||
| 78. You find yourself dialing IP numbers on the phone. | ||||
| 
 | ||||
|  /// 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    /// | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user