Karsten Hopp ec7af4
To: vim_dev@googlegroups.com
Karsten Hopp ec7af4
Subject: Patch 7.3.951
Karsten Hopp ec7af4
Fcc: outbox
Karsten Hopp ec7af4
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp ec7af4
Mime-Version: 1.0
Karsten Hopp ec7af4
Content-Type: text/plain; charset=UTF-8
Karsten Hopp ec7af4
Content-Transfer-Encoding: 8bit
Karsten Hopp ec7af4
------------
Karsten Hopp ec7af4
Karsten Hopp ec7af4
Patch 7.3.951
Karsten Hopp ec7af4
Problem:    Python exceptions have problems.
Karsten Hopp ec7af4
Solution:   Change some IndexErrors to TypeErrors. Make “line number out of
Karsten Hopp ec7af4
	    range” an IndexError.  Make “unable to get option value” a
Karsten Hopp ec7af4
	    RuntimeError. Make all PyErr_SetString messages start with
Karsten Hopp ec7af4
	    lowercase letter and use _(). (ZyX)
Karsten Hopp ec7af4
Files:	    src/if_py_both.h, src/if_python3.c, src/if_python.c,
Karsten Hopp ec7af4
	    src/testdir/test86.ok, src/testdir/test87.ok
Karsten Hopp ec7af4
Karsten Hopp ec7af4
Karsten Hopp ec7af4
*** ../vim-7.3.950/src/if_py_both.h	2013-05-15 15:35:05.000000000 +0200
Karsten Hopp ec7af4
--- src/if_py_both.h	2013-05-15 15:38:57.000000000 +0200
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 71,77 ****
Karsten Hopp ec7af4
  {
Karsten Hopp ec7af4
      if (val == NULL)
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 71,78 ----
Karsten Hopp ec7af4
  {
Karsten Hopp ec7af4
      if (val == NULL)
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_AttributeError,
Karsten Hopp ec7af4
! 		_("can't delete OutputObject attributes"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 919,925 ****
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
      if (index>=ListLength(self))
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "list index out of range");
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      li = list_find(((ListObject *) (self))->list, (long) index);
Karsten Hopp ec7af4
--- 920,926 ----
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
      if (index>=ListLength(self))
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, _("list index out of range"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      li = list_find(((ListObject *) (self))->list, (long) index);
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1047,1053 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      if (index>length || (index==length && obj==NULL))
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "list index out of range");
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 1048,1054 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      if (index>length || (index==length && obj==NULL))
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, _("list index out of range"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1186,1192 ****
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
      if (val == NULL)
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 1187,1194 ----
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
      if (val == NULL)
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_AttributeError,
Karsten Hopp ec7af4
! 		_("cannot delete vim.dictionary attributes"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1194,1200 ****
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
  	if (this->list->lv_lock == VAR_FIXED)
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed list"));
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
--- 1196,1202 ----
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
  	if (this->list->lv_lock == VAR_FIXED)
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_TypeError, _("cannot modify fixed list"));
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1208,1214 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1210,1216 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_AttributeError, _("cannot set this attribute"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1377,1383 ****
Karsten Hopp ec7af4
  	    return PyBytes_FromString((char *) stringval);
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError, "Unable to get option value");
Karsten Hopp ec7af4
  	    return NULL;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
--- 1379,1386 ----
Karsten Hopp ec7af4
  	    return PyBytes_FromString((char *) stringval);
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_RuntimeError,
Karsten Hopp ec7af4
! 		    _("unable to get option value"));
Karsten Hopp ec7af4
  	    return NULL;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1455,1467 ****
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
  	if (this->opt_type == SREQ_GLOBAL)
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError, "Unable to unset global option");
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else if (!(flags & SOPT_GLOBAL))
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError, "Unable to unset option without "
Karsten Hopp ec7af4
! 						"global value");
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
--- 1458,1471 ----
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
  	if (this->opt_type == SREQ_GLOBAL)
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError,
Karsten Hopp ec7af4
! 		    _("unable to unset global option"));
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else if (!(flags & SOPT_GLOBAL))
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError, _("unable to unset option "
Karsten Hopp ec7af4
! 						"without global value"));
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1491,1497 ****
Karsten Hopp ec7af4
  	    val = PyLong_AsLong(valObject);
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError, "Object must be integer");
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 1495,1501 ----
Karsten Hopp ec7af4
  	    val = PyLong_AsLong(valObject);
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_TypeError, _("object must be integer"));
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1529,1535 ****
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_ValueError, "Object must be string");
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 1533,1539 ----
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  	else
Karsten Hopp ec7af4
  	{
Karsten Hopp ec7af4
! 	    PyErr_SetString(PyExc_TypeError, _("object must be string"));
Karsten Hopp ec7af4
  	    return -1;
Karsten Hopp ec7af4
  	}
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 2766,2772 ****
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
      if (n < 0 || n > max)
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_ValueError, _("line number out of range"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 2770,2776 ----
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
      if (n < 0 || n > max)
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, _("line number out of range"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 3135,3141 ****
Karsten Hopp ec7af4
  	bnr = PyLong_AsLong(keyObject);
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_ValueError, _("key must be integer"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
--- 3139,3145 ----
Karsten Hopp ec7af4
  	bnr = PyLong_AsLong(keyObject);
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("key must be integer"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 3654,3660 ****
Karsten Hopp ec7af4
  	return convert_dl(obj, tv, pymap_to_tv, lookupDict);
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("unable to convert to vim structure"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      return 0;
Karsten Hopp ec7af4
--- 3658,3665 ----
Karsten Hopp ec7af4
  	return convert_dl(obj, tv, pymap_to_tv, lookupDict);
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError,
Karsten Hopp ec7af4
! 		_("unable to convert to vim structure"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      return 0;
Karsten Hopp ec7af4
*** ../vim-7.3.950/src/if_python3.c	2013-05-15 15:35:05.000000000 +0200
Karsten Hopp ec7af4
--- src/if_python3.c	2013-05-15 15:38:57.000000000 +0200
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 336,341 ****
Karsten Hopp ec7af4
--- 336,342 ----
Karsten Hopp ec7af4
  static PyObject *p3imp_PyExc_KeyboardInterrupt;
Karsten Hopp ec7af4
  static PyObject *p3imp_PyExc_TypeError;
Karsten Hopp ec7af4
  static PyObject *p3imp_PyExc_ValueError;
Karsten Hopp ec7af4
+ static PyObject *p3imp_PyExc_RuntimeError;
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
  # define PyExc_AttributeError p3imp_PyExc_AttributeError
Karsten Hopp ec7af4
  # define PyExc_IndexError p3imp_PyExc_IndexError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 343,348 ****
Karsten Hopp ec7af4
--- 344,350 ----
Karsten Hopp ec7af4
  # define PyExc_KeyboardInterrupt p3imp_PyExc_KeyboardInterrupt
Karsten Hopp ec7af4
  # define PyExc_TypeError p3imp_PyExc_TypeError
Karsten Hopp ec7af4
  # define PyExc_ValueError p3imp_PyExc_ValueError
Karsten Hopp ec7af4
+ # define PyExc_RuntimeError p3imp_PyExc_RuntimeError
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
  /*
Karsten Hopp ec7af4
   * Table of name to function pointer of python.
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 580,591 ****
Karsten Hopp ec7af4
--- 582,595 ----
Karsten Hopp ec7af4
      p3imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt");
Karsten Hopp ec7af4
      p3imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError");
Karsten Hopp ec7af4
      p3imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError");
Karsten Hopp ec7af4
+     p3imp_PyExc_RuntimeError = PyDict_GetItemString(exdict, "RuntimeError");
Karsten Hopp ec7af4
      Py_XINCREF(p3imp_PyExc_AttributeError);
Karsten Hopp ec7af4
      Py_XINCREF(p3imp_PyExc_IndexError);
Karsten Hopp ec7af4
      Py_XINCREF(p3imp_PyExc_KeyError);
Karsten Hopp ec7af4
      Py_XINCREF(p3imp_PyExc_KeyboardInterrupt);
Karsten Hopp ec7af4
      Py_XINCREF(p3imp_PyExc_TypeError);
Karsten Hopp ec7af4
      Py_XINCREF(p3imp_PyExc_ValueError);
Karsten Hopp ec7af4
+     Py_XINCREF(p3imp_PyExc_RuntimeError);
Karsten Hopp ec7af4
      Py_XDECREF(exmod);
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
  #endif /* DYNAMIC_PYTHON3 */
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1132,1138 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1136,1142 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1166,1172 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1170,1176 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1248,1254 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1252,1258 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1275,1281 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1279,1285 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1450,1456 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1454,1460 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
Karsten Hopp ec7af4
  	return NULL;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 1474,1480 ****
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
--- 1478,1484 ----
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
      else
Karsten Hopp ec7af4
      {
Karsten Hopp ec7af4
! 	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
Karsten Hopp ec7af4
  	return -1;
Karsten Hopp ec7af4
      }
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
*** ../vim-7.3.950/src/if_python.c	2013-05-15 15:35:05.000000000 +0200
Karsten Hopp ec7af4
--- src/if_python.c	2013-05-15 15:38:57.000000000 +0200
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 358,363 ****
Karsten Hopp ec7af4
--- 358,364 ----
Karsten Hopp ec7af4
  static PyObject *imp_PyExc_KeyboardInterrupt;
Karsten Hopp ec7af4
  static PyObject *imp_PyExc_TypeError;
Karsten Hopp ec7af4
  static PyObject *imp_PyExc_ValueError;
Karsten Hopp ec7af4
+ static PyObject *imp_PyExc_RuntimeError;
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
  # define PyExc_AttributeError imp_PyExc_AttributeError
Karsten Hopp ec7af4
  # define PyExc_IndexError imp_PyExc_IndexError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 365,370 ****
Karsten Hopp ec7af4
--- 366,372 ----
Karsten Hopp ec7af4
  # define PyExc_KeyboardInterrupt imp_PyExc_KeyboardInterrupt
Karsten Hopp ec7af4
  # define PyExc_TypeError imp_PyExc_TypeError
Karsten Hopp ec7af4
  # define PyExc_ValueError imp_PyExc_ValueError
Karsten Hopp ec7af4
+ # define PyExc_RuntimeError imp_PyExc_RuntimeError
Karsten Hopp ec7af4
  
Karsten Hopp ec7af4
  /*
Karsten Hopp ec7af4
   * Table of name to function pointer of python.
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 593,604 ****
Karsten Hopp ec7af4
--- 595,608 ----
Karsten Hopp ec7af4
      imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt");
Karsten Hopp ec7af4
      imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError");
Karsten Hopp ec7af4
      imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError");
Karsten Hopp ec7af4
+     imp_PyExc_RuntimeError = PyDict_GetItemString(exdict, "RuntimeError");
Karsten Hopp ec7af4
      Py_XINCREF(imp_PyExc_AttributeError);
Karsten Hopp ec7af4
      Py_XINCREF(imp_PyExc_IndexError);
Karsten Hopp ec7af4
      Py_XINCREF(imp_PyExc_KeyError);
Karsten Hopp ec7af4
      Py_XINCREF(imp_PyExc_KeyboardInterrupt);
Karsten Hopp ec7af4
      Py_XINCREF(imp_PyExc_TypeError);
Karsten Hopp ec7af4
      Py_XINCREF(imp_PyExc_ValueError);
Karsten Hopp ec7af4
+     Py_XINCREF(imp_PyExc_RuntimeError);
Karsten Hopp ec7af4
      Py_XDECREF(exmod);
Karsten Hopp ec7af4
  }
Karsten Hopp ec7af4
  #endif /* DYNAMIC_PYTHON */
Karsten Hopp ec7af4
*** ../vim-7.3.950/src/testdir/test86.ok	2013-05-15 14:51:31.000000000 +0200
Karsten Hopp ec7af4
--- src/testdir/test86.ok	2013-05-15 15:38:57.000000000 +0200
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 102,108 ****
Karsten Hopp ec7af4
    B: 1:1 2:1 3:1 4:1
Karsten Hopp ec7af4
  >>> previewheight
Karsten Hopp ec7af4
    p/gopts1: 12
Karsten Hopp ec7af4
!   inv: 'a'! ValueError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 'a'! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
--- 102,108 ----
Karsten Hopp ec7af4
    B: 1:1 2:1 3:1 4:1
Karsten Hopp ec7af4
  >>> previewheight
Karsten Hopp ec7af4
    p/gopts1: 12
Karsten Hopp ec7af4
!   inv: 'a'! TypeError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 'a'! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 123,129 ****
Karsten Hopp ec7af4
    B: 1:5 2:5 3:5 4:5
Karsten Hopp ec7af4
  >>> operatorfunc
Karsten Hopp ec7af4
    p/gopts1: ''
Karsten Hopp ec7af4
!   inv: 2! ValueError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 2! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
--- 123,129 ----
Karsten Hopp ec7af4
    B: 1:5 2:5 3:5 4:5
Karsten Hopp ec7af4
  >>> operatorfunc
Karsten Hopp ec7af4
    p/gopts1: ''
Karsten Hopp ec7af4
!   inv: 2! TypeError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 2! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 198,206 ****
Karsten Hopp ec7af4
    B: 1:'+2' 2:'+3' 3:'+1' 4:''
Karsten Hopp ec7af4
  >>> statusline
Karsten Hopp ec7af4
    p/gopts1: ''
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    p/wopts1: None
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    p/bopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    bopts1! KeyError
Karsten Hopp ec7af4
--- 198,206 ----
Karsten Hopp ec7af4
    B: 1:'+2' 2:'+3' 3:'+1' 4:''
Karsten Hopp ec7af4
  >>> statusline
Karsten Hopp ec7af4
    p/gopts1: ''
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    p/wopts1: None
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    p/bopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    bopts1! KeyError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 259,265 ****
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: ''
Karsten Hopp ec7af4
!   inv: 1! ValueError
Karsten Hopp ec7af4
    G: ''
Karsten Hopp ec7af4
    W: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
    B: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
--- 259,265 ----
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: ''
Karsten Hopp ec7af4
!   inv: 1! TypeError
Karsten Hopp ec7af4
    G: ''
Karsten Hopp ec7af4
    W: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
    B: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 288,301 ****
Karsten Hopp ec7af4
    B: 1:0 2:1 3:0 4:1
Karsten Hopp ec7af4
  >>> path
Karsten Hopp ec7af4
    p/gopts1: '.,/usr/include,,'
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: None
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    G: '.,,'
Karsten Hopp ec7af4
    W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
    B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
--- 288,301 ----
Karsten Hopp ec7af4
    B: 1:0 2:1 3:0 4:1
Karsten Hopp ec7af4
  >>> path
Karsten Hopp ec7af4
    p/gopts1: '.,/usr/include,,'
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: None
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    G: '.,,'
Karsten Hopp ec7af4
    W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
    B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
*** ../vim-7.3.950/src/testdir/test87.ok	2013-05-15 14:51:31.000000000 +0200
Karsten Hopp ec7af4
--- src/testdir/test87.ok	2013-05-15 15:38:57.000000000 +0200
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 91,97 ****
Karsten Hopp ec7af4
    B: 1:1 2:1 3:1 4:1
Karsten Hopp ec7af4
  >>> previewheight
Karsten Hopp ec7af4
    p/gopts1: 12
Karsten Hopp ec7af4
!   inv: 'a'! ValueError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 'a'! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
--- 91,97 ----
Karsten Hopp ec7af4
    B: 1:1 2:1 3:1 4:1
Karsten Hopp ec7af4
  >>> previewheight
Karsten Hopp ec7af4
    p/gopts1: 12
Karsten Hopp ec7af4
!   inv: 'a'! TypeError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 'a'! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 112,118 ****
Karsten Hopp ec7af4
    B: 1:5 2:5 3:5 4:5
Karsten Hopp ec7af4
  >>> operatorfunc
Karsten Hopp ec7af4
    p/gopts1: b''
Karsten Hopp ec7af4
!   inv: 2! ValueError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 2! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
--- 112,118 ----
Karsten Hopp ec7af4
    B: 1:5 2:5 3:5 4:5
Karsten Hopp ec7af4
  >>> operatorfunc
Karsten Hopp ec7af4
    p/gopts1: b''
Karsten Hopp ec7af4
!   inv: 2! TypeError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 2! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 187,195 ****
Karsten Hopp ec7af4
    B: 1:'+2' 2:'+3' 3:'+1' 4:''
Karsten Hopp ec7af4
  >>> statusline
Karsten Hopp ec7af4
    p/gopts1: b''
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    p/wopts1: None
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    p/bopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    bopts1! KeyError
Karsten Hopp ec7af4
--- 187,195 ----
Karsten Hopp ec7af4
    B: 1:'+2' 2:'+3' 3:'+1' 4:''
Karsten Hopp ec7af4
  >>> statusline
Karsten Hopp ec7af4
    p/gopts1: b''
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    p/wopts1: None
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    p/bopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    bopts1! KeyError
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 248,254 ****
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: b''
Karsten Hopp ec7af4
!   inv: 1! ValueError
Karsten Hopp ec7af4
    G: ''
Karsten Hopp ec7af4
    W: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
    B: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
--- 248,254 ----
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: b''
Karsten Hopp ec7af4
!   inv: 1! TypeError
Karsten Hopp ec7af4
    G: ''
Karsten Hopp ec7af4
    W: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
    B: 1:'A' 2:'B' 3:'' 4:'C'
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 277,290 ****
Karsten Hopp ec7af4
    B: 1:0 2:1 3:0 4:1
Karsten Hopp ec7af4
  >>> path
Karsten Hopp ec7af4
    p/gopts1: b'.,/usr/include,,'
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: None
Karsten Hopp ec7af4
!   inv: 0! ValueError
Karsten Hopp ec7af4
    G: '.,,'
Karsten Hopp ec7af4
    W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
    B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
--- 277,290 ----
Karsten Hopp ec7af4
    B: 1:0 2:1 3:0 4:1
Karsten Hopp ec7af4
  >>> path
Karsten Hopp ec7af4
    p/gopts1: b'.,/usr/include,,'
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    p/wopts1! KeyError
Karsten Hopp ec7af4
    inv: 0! KeyError
Karsten Hopp ec7af4
    wopts1! KeyError
Karsten Hopp ec7af4
    wopts2! KeyError
Karsten Hopp ec7af4
    wopts3! KeyError
Karsten Hopp ec7af4
    p/bopts1: None
Karsten Hopp ec7af4
!   inv: 0! TypeError
Karsten Hopp ec7af4
    G: '.,,'
Karsten Hopp ec7af4
    W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
    B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
Karsten Hopp ec7af4
*** ../vim-7.3.950/src/version.c	2013-05-15 15:35:05.000000000 +0200
Karsten Hopp ec7af4
--- src/version.c	2013-05-15 15:38:34.000000000 +0200
Karsten Hopp ec7af4
***************
Karsten Hopp ec7af4
*** 730,731 ****
Karsten Hopp ec7af4
--- 730,733 ----
Karsten Hopp ec7af4
  {   /* Add new patch number below this line */
Karsten Hopp ec7af4
+ /**/
Karsten Hopp ec7af4
+     951,
Karsten Hopp ec7af4
  /**/
Karsten Hopp ec7af4
Karsten Hopp ec7af4
-- 
Karsten Hopp ec7af4
5 out of 4 people have trouble with fractions.
Karsten Hopp ec7af4
Karsten Hopp ec7af4
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp ec7af4
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp ec7af4
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp ec7af4
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///