- 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