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 ///