diff --git a/7.3.1059 b/7.3.1059 new file mode 100644 index 0000000..61b158e --- /dev/null +++ b/7.3.1059 @@ -0,0 +1,321 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1059 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1059 +Problem: Python: Using fixed size buffers. +Solution: Python patch 18: Use python's own formatter. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + + +*** ../vim-7.3.1058/src/if_py_both.h 2013-05-30 12:26:52.000000000 +0200 +--- src/if_py_both.h 2013-05-30 12:38:22.000000000 +0200 +*************** +*** 2006,2029 **** + static PyObject * + TabPageRepr(TabPageObject *self) + { +- static char repr[100]; +- + if (self->tab == INVALID_TABPAGE_VALUE) +! { +! vim_snprintf(repr, 100, _(""), (self)); +! return PyString_FromString(repr); +! } + else + { + int t = get_tab_number(self->tab); + + if (t == 0) +! vim_snprintf(repr, 100, _(""), +! (self)); + else +! vim_snprintf(repr, 100, _(""), t - 1); +! +! return PyString_FromString(repr); + } + } + +--- 2006,2022 ---- + static PyObject * + TabPageRepr(TabPageObject *self) + { + if (self->tab == INVALID_TABPAGE_VALUE) +! return PyString_FromFormat("", (self)); + else + { + int t = get_tab_number(self->tab); + + if (t == 0) +! return PyString_FromFormat("", +! (self)); + else +! return PyString_FromFormat("", t - 1); + } + } + +*************** +*** 2344,2367 **** + static PyObject * + WindowRepr(WindowObject *self) + { +- static char repr[100]; +- + if (self->win == INVALID_WINDOW_VALUE) +! { +! vim_snprintf(repr, 100, _(""), (self)); +! return PyString_FromString(repr); +! } + else + { + int w = get_win_number(self->win, firstwin); + + if (w == 0) +! vim_snprintf(repr, 100, _(""), + (self)); + else +! vim_snprintf(repr, 100, _(""), w - 1); +! +! return PyString_FromString(repr); + } + } + +--- 2337,2353 ---- + static PyObject * + WindowRepr(WindowObject *self) + { + if (self->win == INVALID_WINDOW_VALUE) +! return PyString_FromFormat("", (self)); + else + { + int w = get_win_number(self->win, firstwin); + + if (w == 0) +! return PyString_FromFormat("", + (self)); + else +! return PyString_FromFormat("", w - 1); + } + } + +*************** +*** 3281,3311 **** + static PyObject * + RangeRepr(RangeObject *self) + { +- static char repr[100]; +- + if (self->buf->buf == INVALID_BUFFER_VALUE) +! { +! vim_snprintf(repr, 100, "", +! (self)); +! return PyString_FromString(repr); +! } + else + { + char *name = (char *)self->buf->buf->b_fname; +- int len; + + if (name == NULL) + name = ""; +- len = (int)strlen(name); +- +- if (len > 45) +- name = name + (45 - len); +- +- vim_snprintf(repr, 100, "", +- len > 45 ? "..." : "", name, +- self->start, self->end); + +! return PyString_FromString(repr); + } + } + +--- 3267,3284 ---- + static PyObject * + RangeRepr(RangeObject *self) + { + if (self->buf->buf == INVALID_BUFFER_VALUE) +! return PyString_FromFormat("", +! (self)); + else + { + char *name = (char *)self->buf->buf->b_fname; + + if (name == NULL) + name = ""; + +! return PyString_FromFormat("", +! name, self->start, self->end); + } + } + +*************** +*** 3534,3561 **** + static PyObject * + BufferRepr(BufferObject *self) + { +- static char repr[100]; +- + if (self->buf == INVALID_BUFFER_VALUE) +! { +! vim_snprintf(repr, 100, _(""), (self)); +! return PyString_FromString(repr); +! } + else + { +! char *name = (char *)self->buf->b_fname; +! PyInt len; + + if (name == NULL) + name = ""; +- len = strlen(name); +- +- if (len > 35) +- name = name + (35 - len); +- +- vim_snprintf(repr, 100, "", len > 35 ? "..." : "", name); + +! return PyString_FromString(repr); + } + } + +--- 3507,3522 ---- + static PyObject * + BufferRepr(BufferObject *self) + { + if (self->buf == INVALID_BUFFER_VALUE) +! return PyString_FromFormat("", self); + else + { +! char *name = (char *)self->buf->b_fname; + + if (name == NULL) + name = ""; + +! return PyString_FromFormat("", name); + } + } + +*** ../vim-7.3.1058/src/if_python3.c 2013-05-29 22:36:06.000000000 +0200 +--- src/if_python3.c 2013-05-30 12:39:25.000000000 +0200 +*************** +*** 90,95 **** +--- 90,96 ---- + #define PyString_AsString(obj) PyBytes_AsString(obj) + #define PyString_Size(obj) PyBytes_GET_SIZE(bytes) + #define PyString_FromString(repr) PyUnicode_FromString(repr) ++ #define PyString_FromFormat PyUnicode_FromFormat + #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len) + #define PyInt_Check(obj) PyLong_Check(obj) + #define PyInt_FromLong(i) PyLong_FromLong(i) +*************** +*** 230,235 **** +--- 231,246 ---- + # define PyType_GenericNew py3_PyType_GenericNew + # undef PyUnicode_FromString + # define PyUnicode_FromString py3_PyUnicode_FromString ++ # ifndef PyUnicode_FromFormat ++ # define PyUnicode_FromFormat py3_PyUnicode_FromFormat ++ # else ++ # define Py_UNICODE_USE_UCS_FUNCTIONS ++ # ifdef Py_UNICODE_WIDE ++ # define PyUnicodeUCS4_FromFormat py3_PyUnicodeUCS4_FromFormat ++ # else ++ # define PyUnicodeUCS2_FromFormat py3_PyUnicodeUCS2_FromFormat ++ # endif ++ # endif + # undef PyUnicode_Decode + # define PyUnicode_Decode py3_PyUnicode_Decode + # define PyType_IsSubtype py3_PyType_IsSubtype +*************** +*** 293,298 **** +--- 304,318 ---- + static int (*py3_PyType_Ready)(PyTypeObject *type); + static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); + static PyObject* (*py3_PyUnicode_FromString)(const char *u); ++ # ifndef Py_UNICODE_USE_UCS_FUNCTIONS ++ static PyObject* (*py3_PyUnicode_FromFormat)(const char *u, ...); ++ # else ++ # ifdef Py_UNICODE_WIDE ++ static PyObject* (*py3_PyUnicodeUCS4_FromFormat)(const char *u, ...); ++ # else ++ static PyObject* (*py3_PyUnicodeUCS2_FromFormat)(const char *u, ...); ++ # endif ++ # endif + static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size, + const char *encoding, const char *errors); + static long (*py3_PyLong_AsLong)(PyObject *); +*************** +*** 458,463 **** +--- 478,492 ---- + # else + {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, + # endif ++ # ifndef Py_UNICODE_USE_UCS_FUNCTIONS ++ {"PyUnicode_FromFormat", (PYTHON_PROC*)&py3_PyUnicode_FromFormat}, ++ # else ++ # ifdef Py_UNICODE_WIDE ++ {"PyUnicodeUCS4_FromFormat", (PYTHON_PROC*)&py3_PyUnicodeUCS4_FromFormat}, ++ # else ++ {"PyUnicodeUCS2_FromFormat", (PYTHON_PROC*)&py3_PyUnicodeUCS2_FromFormat}, ++ # endif ++ # endif + {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, + {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, + {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, +*** ../vim-7.3.1058/src/if_python.c 2013-05-29 22:36:06.000000000 +0200 +--- src/if_python.c 2013-05-30 12:38:22.000000000 +0200 +*************** +*** 212,217 **** +--- 212,218 ---- + # define PyString_AsString dll_PyString_AsString + # define PyString_AsStringAndSize dll_PyString_AsStringAndSize + # define PyString_FromString dll_PyString_FromString ++ # define PyString_FromFormat dll_PyString_FromFormat + # define PyString_FromStringAndSize dll_PyString_FromStringAndSize + # define PyString_Size dll_PyString_Size + # define PyString_Type (*dll_PyString_Type) +*************** +*** 340,345 **** +--- 341,347 ---- + 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_FromFormat)(const char *, ...); + static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt); + static PyInt(*dll_PyString_Size)(PyObject *); + static PyTypeObject* dll_PyString_Type; +*************** +*** 499,504 **** +--- 501,507 ---- + {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString}, + {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize}, + {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString}, ++ {"PyString_FromFormat", (PYTHON_PROC*)&dll_PyString_FromFormat}, + {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize}, + {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size}, + {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type}, +*** ../vim-7.3.1058/src/version.c 2013-05-30 12:35:48.000000000 +0200 +--- src/version.c 2013-05-30 12:39:51.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1059, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +2. Page yourself over the intercom. Don't disguise your voice. + + /// 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 ///