mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
updated for version 7.3.661
Problem: SEGV in Python code. Solution: Initialize len to zero. Use the right function depending on version. (Maxim Philippov)
This commit is contained in:
parent
fca93c093e
commit
e8cdcef875
@ -74,7 +74,7 @@ static struct PyMethodDef OutputMethods[] = {
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
OutputWrite(PyObject *self, PyObject *args)
|
OutputWrite(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
Py_ssize_t len;
|
Py_ssize_t len = 0;
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
int error = ((OutputObject *)(self))->error;
|
int error = ((OutputObject *)(self))->error;
|
||||||
|
|
||||||
|
@ -44,8 +44,6 @@
|
|||||||
# undef _XOPEN_SOURCE /* pyconfig.h defines it as well. */
|
# undef _XOPEN_SOURCE /* pyconfig.h defines it as well. */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PY_SSIZE_T_CLEAN
|
|
||||||
|
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#if defined(MACOS) && !defined(MACOS_X_UNIX)
|
#if defined(MACOS) && !defined(MACOS_X_UNIX)
|
||||||
# include "macglue.h"
|
# include "macglue.h"
|
||||||
@ -54,6 +52,10 @@
|
|||||||
#undef main /* Defined in python.h - aargh */
|
#undef main /* Defined in python.h - aargh */
|
||||||
#undef HAVE_FCNTL_H /* Clash with os_win32.h */
|
#undef HAVE_FCNTL_H /* Clash with os_win32.h */
|
||||||
|
|
||||||
|
#if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000
|
||||||
|
# define PY_SSIZE_T_CLEAN
|
||||||
|
#endif
|
||||||
|
|
||||||
static void init_structs(void);
|
static void init_structs(void);
|
||||||
|
|
||||||
#define PyBytes_FromString PyString_FromString
|
#define PyBytes_FromString PyString_FromString
|
||||||
@ -358,8 +360,15 @@ static struct
|
|||||||
PYTHON_PROC *ptr;
|
PYTHON_PROC *ptr;
|
||||||
} python_funcname_table[] =
|
} python_funcname_table[] =
|
||||||
{
|
{
|
||||||
|
#ifndef PY_SSIZE_T_CLEAN
|
||||||
{"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse},
|
{"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse},
|
||||||
{"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple},
|
{"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple},
|
||||||
|
{"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
|
||||||
|
#else
|
||||||
|
{"_PyArg_Parse_SizeT", (PYTHON_PROC*)&dll_PyArg_Parse},
|
||||||
|
{"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&dll_PyArg_ParseTuple},
|
||||||
|
{"_Py_BuildValue_SizeT", (PYTHON_PROC*)&dll_Py_BuildValue},
|
||||||
|
#endif
|
||||||
{"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free},
|
{"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free},
|
||||||
{"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc},
|
{"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc},
|
||||||
{"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
|
{"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
|
||||||
@ -422,7 +431,6 @@ static struct
|
|||||||
{"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv},
|
{"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv},
|
||||||
{"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type},
|
{"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type},
|
||||||
{"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready},
|
{"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready},
|
||||||
{"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
|
|
||||||
{"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
|
{"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
|
||||||
# if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \
|
# if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \
|
||||||
&& SIZEOF_SIZE_T != SIZEOF_INT
|
&& SIZEOF_SIZE_T != SIZEOF_INT
|
||||||
|
@ -42,8 +42,6 @@
|
|||||||
# undef _DEBUG
|
# undef _DEBUG
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PY_SSIZE_T_CLEAN
|
|
||||||
|
|
||||||
#ifdef F_BLANK
|
#ifdef F_BLANK
|
||||||
# undef F_BLANK
|
# undef F_BLANK
|
||||||
#endif
|
#endif
|
||||||
@ -66,6 +64,10 @@
|
|||||||
#undef main /* Defined in python.h - aargh */
|
#undef main /* Defined in python.h - aargh */
|
||||||
#undef HAVE_FCNTL_H /* Clash with os_win32.h */
|
#undef HAVE_FCNTL_H /* Clash with os_win32.h */
|
||||||
|
|
||||||
|
#if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000
|
||||||
|
# define PY_SSIZE_T_CLEAN
|
||||||
|
#endif
|
||||||
|
|
||||||
static void init_structs(void);
|
static void init_structs(void);
|
||||||
|
|
||||||
/* The "surrogateescape" error handler is new in Python 3.1 */
|
/* The "surrogateescape" error handler is new in Python 3.1 */
|
||||||
@ -328,7 +330,13 @@ static struct
|
|||||||
{"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv},
|
{"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv},
|
||||||
{"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome},
|
{"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome},
|
||||||
{"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
|
{"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
|
||||||
|
#ifndef PY_SSIZE_T_CLEAN
|
||||||
{"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
|
{"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
|
||||||
|
{"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue},
|
||||||
|
#else
|
||||||
|
{"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
|
||||||
|
{"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue},
|
||||||
|
#endif
|
||||||
{"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free},
|
{"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free},
|
||||||
{"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc},
|
{"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc},
|
||||||
{"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
|
{"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
|
||||||
@ -364,7 +372,6 @@ static struct
|
|||||||
{"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter},
|
{"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter},
|
||||||
{"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong},
|
{"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong},
|
||||||
{"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New},
|
{"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New},
|
||||||
{"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue},
|
|
||||||
{"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready},
|
{"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready},
|
||||||
{"PyDict_SetItemString", (PYTHON_PROC*)&py3_PyDict_SetItemString},
|
{"PyDict_SetItemString", (PYTHON_PROC*)&py3_PyDict_SetItemString},
|
||||||
{"PyLong_AsLong", (PYTHON_PROC*)&py3_PyLong_AsLong},
|
{"PyLong_AsLong", (PYTHON_PROC*)&py3_PyLong_AsLong},
|
||||||
|
@ -719,6 +719,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
661,
|
||||||
/**/
|
/**/
|
||||||
660,
|
660,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user