home *** CD-ROM | disk | FTP | other *** search
- To: vim_dev@googlegroups.com
- Subject: Patch 7.3.657
- 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.657
- Problem: Python bindings silently truncate string values containing NUL.
- Solution: Fail when a string contains NUL. (ZyX)
- Files: src/if_python.c, src/if_python3.c
-
-
- *** ../vim-7.3.656/src/if_python.c 2012-09-05 18:54:37.000000000 +0200
- --- src/if_python.c 2012-09-05 19:02:07.000000000 +0200
- ***************
- *** 191,196 ****
- --- 191,197 ----
- # define PyRun_SimpleString dll_PyRun_SimpleString
- # define PyRun_String dll_PyRun_String
- # define PyString_AsString dll_PyString_AsString
- + # define PyString_AsStringAndSize dll_PyString_AsStringAndSize
- # define PyString_FromString dll_PyString_FromString
- # define PyString_FromStringAndSize dll_PyString_FromStringAndSize
- # define PyString_Size dll_PyString_Size
- ***************
- *** 288,293 ****
- --- 289,295 ----
- static int(*dll_PyRun_SimpleString)(char *);
- static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *);
- static char*(*dll_PyString_AsString)(PyObject *);
- + static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, int *);
- static PyObject*(*dll_PyString_FromString)(const char *);
- static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
- static PyInt(*dll_PyString_Size)(PyObject *);
- ***************
- *** 406,411 ****
- --- 408,414 ----
- {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString},
- {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String},
- {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString},
- + {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize},
- {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString},
- {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize},
- {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
- ***************
- *** 578,591 ****
- static int initialised = 0;
- #define PYINITIALISED initialised
-
- - /* Add conversion from PyInt? */
- #define DICTKEY_GET(err) \
- if (!PyString_Check(keyObject)) \
- { \
- PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
- return err; \
- } \
- ! key = (char_u *) PyString_AsString(keyObject);
- #define DICTKEY_UNREF
- #define DICTKEY_DECL
-
- --- 581,595 ----
- static int initialised = 0;
- #define PYINITIALISED initialised
-
- #define DICTKEY_GET(err) \
- if (!PyString_Check(keyObject)) \
- { \
- PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
- return err; \
- } \
- ! if (PyString_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \
- ! return err;
- !
- #define DICTKEY_UNREF
- #define DICTKEY_DECL
-
- *** ../vim-7.3.656/src/if_python3.c 2012-09-05 18:54:37.000000000 +0200
- --- src/if_python3.c 2012-09-05 19:02:07.000000000 +0200
- ***************
- *** 172,177 ****
- --- 172,178 ----
- # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString
- # undef PyBytes_AsString
- # define PyBytes_AsString py3_PyBytes_AsString
- + # define PyBytes_AsStringAndSize py3_PyBytes_AsStringAndSize
- # undef PyBytes_FromString
- # define PyBytes_FromString py3_PyBytes_FromString
- # define PyFloat_FromDouble py3_PyFloat_FromDouble
- ***************
- *** 273,278 ****
- --- 274,280 ----
- static char* (*py3__PyUnicode_AsString)(PyObject *unicode);
- 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);
- static PyObject* (*py3_PyBytes_FromString)(char *str);
- static PyObject* (*py3_PyFloat_FromDouble)(double num);
- static double (*py3_PyFloat_AsDouble)(PyObject *);
- ***************
- *** 379,384 ****
- --- 381,387 ----
- {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
- {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
- {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
- + {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize},
- {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString},
- {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble},
- {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble},
- ***************
- *** 544,560 ****
-
- #define PYINITIALISED py3initialised
-
- ! /* Add conversion from PyInt? */
- #define DICTKEY_GET(err) \
- if (PyBytes_Check(keyObject)) \
- ! key = (char_u *) PyBytes_AsString(keyObject); \
- else if (PyUnicode_Check(keyObject)) \
- { \
- bytes = PyString_AsBytes(keyObject); \
- if (bytes == NULL) \
- return err; \
- ! key = (char_u *) PyBytes_AsString(bytes); \
- ! if (key == NULL) \
- return err; \
- } \
- else \
- --- 547,566 ----
-
- #define PYINITIALISED py3initialised
-
- ! #define DICTKEY_DECL PyObject *bytes = NULL;
- !
- #define DICTKEY_GET(err) \
- if (PyBytes_Check(keyObject)) \
- ! { \
- ! if (PyBytes_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \
- ! return err; \
- ! } \
- else if (PyUnicode_Check(keyObject)) \
- { \
- bytes = PyString_AsBytes(keyObject); \
- if (bytes == NULL) \
- return err; \
- ! if (PyBytes_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \
- return err; \
- } \
- else \
- ***************
- *** 562,573 ****
- PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
- return err; \
- }
- #define DICTKEY_UNREF \
- if (bytes != NULL) \
- Py_XDECREF(bytes);
-
- - #define DICTKEY_DECL PyObject *bytes = NULL;
- -
- /*
- * Include the code shared with if_python.c
- */
- --- 568,578 ----
- PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
- return err; \
- }
- +
- #define DICTKEY_UNREF \
- if (bytes != NULL) \
- Py_XDECREF(bytes);
-
- /*
- * Include the code shared with if_python.c
- */
- *** ../vim-7.3.656/src/version.c 2012-09-05 18:54:37.000000000 +0200
- --- src/version.c 2012-09-05 19:03:03.000000000 +0200
- ***************
- *** 721,722 ****
- --- 721,724 ----
- { /* Add new patch number below this line */
- + /**/
- + 657,
- /**/
-
- --
- Have you heard about the new Barbie doll? It's called Divorce
- Barbie. It comes with all of Ken's stuff.
-
- /// 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 ///
-