diff --git a/7.3.907 b/7.3.907 new file mode 100644 index 0000000..28d4234 --- /dev/null +++ b/7.3.907 @@ -0,0 +1,162 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.907 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.907 +Problem: Python uses IndexError when a dict key is not found. +Solution: Use KeyError instead. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + + +*** ../vim-7.3.906/src/if_py_both.h 2013-04-05 19:32:30.000000000 +0200 +--- src/if_py_both.h 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 861,867 **** + + if (di == NULL) + { +! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return NULL; + } + +--- 861,867 ---- + + if (di == NULL) + { +! PyErr_SetString(PyExc_KeyError, _("no such key in dictionary")); + return NULL; + } + +*** ../vim-7.3.906/src/if_python3.c 2013-02-20 16:09:35.000000000 +0100 +--- src/if_python3.c 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 327,338 **** +--- 327,340 ---- + /* Imported exception objects */ + static PyObject *p3imp_PyExc_AttributeError; + static PyObject *p3imp_PyExc_IndexError; ++ static PyObject *p3imp_PyExc_KeyError; + static PyObject *p3imp_PyExc_KeyboardInterrupt; + static PyObject *p3imp_PyExc_TypeError; + static PyObject *p3imp_PyExc_ValueError; + + # define PyExc_AttributeError p3imp_PyExc_AttributeError + # define PyExc_IndexError p3imp_PyExc_IndexError ++ # define PyExc_KeyError p3imp_PyExc_KeyError + # define PyExc_KeyboardInterrupt p3imp_PyExc_KeyboardInterrupt + # define PyExc_TypeError p3imp_PyExc_TypeError + # define PyExc_ValueError p3imp_PyExc_ValueError +*************** +*** 567,577 **** +--- 569,581 ---- + PyObject *exdict = PyModule_GetDict(exmod); + p3imp_PyExc_AttributeError = PyDict_GetItemString(exdict, "AttributeError"); + p3imp_PyExc_IndexError = PyDict_GetItemString(exdict, "IndexError"); ++ p3imp_PyExc_KeyError = PyDict_GetItemString(exdict, "KeyError"); + p3imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt"); + p3imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError"); + p3imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError"); + Py_XINCREF(p3imp_PyExc_AttributeError); + Py_XINCREF(p3imp_PyExc_IndexError); ++ Py_XINCREF(p3imp_PyExc_KeyError); + Py_XINCREF(p3imp_PyExc_KeyboardInterrupt); + Py_XINCREF(p3imp_PyExc_TypeError); + Py_XINCREF(p3imp_PyExc_ValueError); +*** ../vim-7.3.906/src/if_python.c 2013-02-20 16:09:35.000000000 +0100 +--- src/if_python.c 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 348,359 **** +--- 348,361 ---- + /* Imported exception objects */ + static PyObject *imp_PyExc_AttributeError; + static PyObject *imp_PyExc_IndexError; ++ static PyObject *imp_PyExc_KeyError; + static PyObject *imp_PyExc_KeyboardInterrupt; + static PyObject *imp_PyExc_TypeError; + static PyObject *imp_PyExc_ValueError; + + # define PyExc_AttributeError imp_PyExc_AttributeError + # define PyExc_IndexError imp_PyExc_IndexError ++ # define PyExc_KeyError imp_PyExc_KeyError + # define PyExc_KeyboardInterrupt imp_PyExc_KeyboardInterrupt + # define PyExc_TypeError imp_PyExc_TypeError + # define PyExc_ValueError imp_PyExc_ValueError +*************** +*** 579,589 **** +--- 581,593 ---- + PyObject *exdict = PyModule_GetDict(exmod); + imp_PyExc_AttributeError = PyDict_GetItemString(exdict, "AttributeError"); + imp_PyExc_IndexError = PyDict_GetItemString(exdict, "IndexError"); ++ imp_PyExc_KeyError = PyDict_GetItemString(exdict, "KeyError"); + imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt"); + imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError"); + imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError"); + Py_XINCREF(imp_PyExc_AttributeError); + Py_XINCREF(imp_PyExc_IndexError); ++ Py_XINCREF(imp_PyExc_KeyError); + Py_XINCREF(imp_PyExc_KeyboardInterrupt); + Py_XINCREF(imp_PyExc_TypeError); + Py_XINCREF(imp_PyExc_ValueError); +*** ../vim-7.3.906/src/testdir/test86.ok 2013-04-05 19:32:30.000000000 +0200 +--- src/testdir/test86.ok 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 38,44 **** + Vim(python):E725: + Vim(python):E117: + [0.0, 0.0] +! IndexError + TypeError + TypeError + ValueError +--- 38,44 ---- + Vim(python):E725: + Vim(python):E117: + [0.0, 0.0] +! KeyError + TypeError + TypeError + ValueError +*** ../vim-7.3.906/src/testdir/test87.ok 2013-02-20 16:54:24.000000000 +0100 +--- src/testdir/test87.ok 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 38,44 **** + Vim(py3):E725: + Vim(py3):E117: + [0.0, 0.0] +! IndexError + TypeError + TypeError + ValueError +--- 38,44 ---- + Vim(py3):E725: + Vim(py3):E117: + [0.0, 0.0] +! KeyError + TypeError + TypeError + ValueError +*** ../vim-7.3.906/src/version.c 2013-04-24 12:56:13.000000000 +0200 +--- src/version.c 2013-04-24 13:00:13.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 907, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +219. Your spouse has his or her lawyer deliver the divorce papers... + via e-mail. + + /// 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 ///