To: vim_dev@googlegroups.com
Subject: Patch 7.3.907
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.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    ///
