]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.950 v7.3.950
authorBram Moolenaar <Bram@vim.org>
Wed, 15 May 2013 13:35:09 +0000 (15:35 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 15 May 2013 13:35:09 +0000 (15:35 +0200)
Problem:    Python: Stack trace printer can't handle messages.
Solution:   Make KeyErrors use PyErr_SetObject. (ZyX)

src/if_py_both.h
src/if_python.c
src/if_python3.c
src/version.c

index b80a3e24a71f180b83cab89edf15ded57ae7d0b1..28505403040713683c5bc31deea303529c105707 100644 (file)
@@ -734,7 +734,7 @@ DictionaryItem(PyObject *self, PyObject *keyObject)
 
     if (di == NULL)
     {
-       PyErr_SetString(PyExc_KeyError, _("no such key in dictionary"));
+       PyErr_SetObject(PyExc_KeyError, keyObject);
        return NULL;
     }
 
@@ -767,7 +767,7 @@ DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject)
        if (di == NULL)
        {
            DICTKEY_UNREF
-           PyErr_SetString(PyExc_IndexError, _("no such key in dictionary"));
+           PyErr_SetObject(PyExc_KeyError, keyObject);
            return -1;
        }
        hi = hash_find(&d->dv_hashtab, di->di_key);
@@ -1353,7 +1353,7 @@ OptionsItem(OptionsObject *this, PyObject *keyObject)
 
     if (flags == 0)
     {
-       PyErr_SetString(PyExc_KeyError, "Option does not exist in given scope");
+       PyErr_SetObject(PyExc_KeyError, keyObject);
        return NULL;
     }
 
@@ -1447,7 +1447,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
 
     if (flags == 0)
     {
-       PyErr_SetString(PyExc_KeyError, "Option does not exist in given scope");
+       PyErr_SetObject(PyExc_KeyError, keyObject);
        return -1;
     }
 
@@ -3145,7 +3145,7 @@ BufMapItem(PyObject *self UNUSED, PyObject *keyObject)
        return BufferNew(b);
     else
     {
-       PyErr_SetString(PyExc_KeyError, _("no such buffer"));
+       PyErr_SetObject(PyExc_KeyError, keyObject);
        return NULL;
     }
 }
index b756c3c6a2171078fa6e47dd80aca26a399171fc..edbba21333cc2ef89db2888783fffe4f684f2a37 100644 (file)
@@ -155,6 +155,7 @@ struct PyMethodDef { Py_ssize_t a; };
 # define PyErr_Occurred dll_PyErr_Occurred
 # define PyErr_SetNone dll_PyErr_SetNone
 # define PyErr_SetString dll_PyErr_SetString
+# define PyErr_SetObject dll_PyErr_SetObject
 # define PyEval_InitThreads dll_PyEval_InitThreads
 # define PyEval_RestoreThread dll_PyEval_RestoreThread
 # define PyEval_SaveThread dll_PyEval_SaveThread
@@ -260,6 +261,7 @@ static PyObject*(*dll_PyErr_NoMemory)(void);
 static PyObject*(*dll_PyErr_Occurred)(void);
 static void(*dll_PyErr_SetNone)(PyObject *);
 static void(*dll_PyErr_SetString)(PyObject *, const char *);
+static void(*dll_PyErr_SetObject)(PyObject *, PyObject *);
 static void(*dll_PyEval_InitThreads)(void);
 static void(*dll_PyEval_RestoreThread)(PyThreadState *);
 static PyThreadState*(*dll_PyEval_SaveThread)(void);
@@ -393,6 +395,7 @@ static struct
     {"PyErr_Occurred", (PYTHON_PROC*)&dll_PyErr_Occurred},
     {"PyErr_SetNone", (PYTHON_PROC*)&dll_PyErr_SetNone},
     {"PyErr_SetString", (PYTHON_PROC*)&dll_PyErr_SetString},
+    {"PyErr_SetObject", (PYTHON_PROC*)&dll_PyErr_SetObject},
     {"PyEval_InitThreads", (PYTHON_PROC*)&dll_PyEval_InitThreads},
     {"PyEval_RestoreThread", (PYTHON_PROC*)&dll_PyEval_RestoreThread},
     {"PyEval_SaveThread", (PYTHON_PROC*)&dll_PyEval_SaveThread},
index f32aca40507e1e7b26a043450fd52dde0231643d..8acab9d555a01785a7aeb93ec166aea034760969 100644 (file)
@@ -128,6 +128,7 @@ static void init_structs(void);
 # define PyErr_Occurred py3_PyErr_Occurred
 # define PyErr_SetNone py3_PyErr_SetNone
 # define PyErr_SetString py3_PyErr_SetString
+# define PyErr_SetObject py3_PyErr_SetObject
 # define PyEval_InitThreads py3_PyEval_InitThreads
 # define PyEval_RestoreThread py3_PyEval_RestoreThread
 # define PyEval_SaveThread py3_PyEval_SaveThread
@@ -250,6 +251,7 @@ static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length,
 static PyObject* (*py3_PyErr_NoMemory)(void);
 static void (*py3_Py_Finalize)(void);
 static void (*py3_PyErr_SetString)(PyObject *, const char *);
+static void (*py3_PyErr_SetObject)(PyObject *, PyObject *);
 static int (*py3_PyRun_SimpleString)(char *);
 static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *);
 static PyObject* (*py3_PyList_GetItem)(PyObject *, Py_ssize_t);
@@ -379,6 +381,7 @@ static struct
     {"PyErr_NoMemory", (PYTHON_PROC*)&py3_PyErr_NoMemory},
     {"Py_Finalize", (PYTHON_PROC*)&py3_Py_Finalize},
     {"PyErr_SetString", (PYTHON_PROC*)&py3_PyErr_SetString},
+    {"PyErr_SetObject", (PYTHON_PROC*)&py3_PyErr_SetObject},
     {"PyRun_SimpleString", (PYTHON_PROC*)&py3_PyRun_SimpleString},
     {"PyRun_String", (PYTHON_PROC*)&py3_PyRun_String},
     {"PyList_GetItem", (PYTHON_PROC*)&py3_PyList_GetItem},
index 6c41c4642ca1dbc0b056373471231e6a11020676..eb7d0db925f089028692b5c884f428a480d9d48a 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    950,
 /**/
     949,
 /**/