comparison src/if_python3.c @ 4145:6b1f3fc893cd v7.3.825

updated for version 7.3.825 Problem: With Python errors are not always clear. Solution: Print the stack trace, unless :silent is used. (ZyX)
author Bram Moolenaar <bram@vim.org>
date Wed, 20 Feb 2013 16:09:43 +0100
parents 3b2a771abb39
children 9f3da1dea7c0
comparison
equal deleted inserted replaced
4144:d6c338c94253 4145:6b1f3fc893cd
120 # define PyMem_Free py3_PyMem_Free 120 # define PyMem_Free py3_PyMem_Free
121 # define PyMem_Malloc py3_PyMem_Malloc 121 # define PyMem_Malloc py3_PyMem_Malloc
122 # define PyDict_SetItemString py3_PyDict_SetItemString 122 # define PyDict_SetItemString py3_PyDict_SetItemString
123 # define PyErr_BadArgument py3_PyErr_BadArgument 123 # define PyErr_BadArgument py3_PyErr_BadArgument
124 # define PyErr_Clear py3_PyErr_Clear 124 # define PyErr_Clear py3_PyErr_Clear
125 # define PyErr_PrintEx py3_PyErr_PrintEx
125 # define PyErr_NoMemory py3_PyErr_NoMemory 126 # define PyErr_NoMemory py3_PyErr_NoMemory
126 # define PyErr_Occurred py3_PyErr_Occurred 127 # define PyErr_Occurred py3_PyErr_Occurred
127 # define PyErr_SetNone py3_PyErr_SetNone 128 # define PyErr_SetNone py3_PyErr_SetNone
128 # define PyErr_SetString py3_PyErr_SetString 129 # define PyErr_SetString py3_PyErr_SetString
129 # define PyEval_InitThreads py3_PyEval_InitThreads 130 # define PyEval_InitThreads py3_PyEval_InitThreads
277 static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...); 278 static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...);
278 static int (*py3_PyMem_Free)(void *); 279 static int (*py3_PyMem_Free)(void *);
279 static void* (*py3_PyMem_Malloc)(size_t); 280 static void* (*py3_PyMem_Malloc)(size_t);
280 static int (*py3_Py_IsInitialized)(void); 281 static int (*py3_Py_IsInitialized)(void);
281 static void (*py3_PyErr_Clear)(void); 282 static void (*py3_PyErr_Clear)(void);
283 static void (*py3_PyErr_PrintEx)(int);
282 static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); 284 static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
283 static iternextfunc py3__PyObject_NextNotImplemented; 285 static iternextfunc py3__PyObject_NextNotImplemented;
284 static PyObject* py3__Py_NoneStruct; 286 static PyObject* py3__Py_NoneStruct;
285 static PyObject* py3__Py_FalseStruct; 287 static PyObject* py3__Py_FalseStruct;
286 static PyObject* py3__Py_TrueStruct; 288 static PyObject* py3__Py_TrueStruct;
401 {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented}, 403 {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&py3__PyObject_NextNotImplemented},
402 {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct}, 404 {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct},
403 {"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct}, 405 {"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct},
404 {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct}, 406 {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct},
405 {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, 407 {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
408 {"PyErr_PrintEx", (PYTHON_PROC*)&py3_PyErr_PrintEx},
406 {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, 409 {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
407 {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, 410 {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
408 {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, 411 {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
409 # if PY_VERSION_HEX >= 0x030300f0 412 # if PY_VERSION_HEX >= 0x030300f0
410 {"PyUnicode_AsUTF8", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8}, 413 {"PyUnicode_AsUTF8", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8},
840 PyObject *r; 843 PyObject *r;
841 844
842 r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input, 845 r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input,
843 globals, globals); 846 globals, globals);
844 if (r == NULL) 847 if (r == NULL)
848 {
849 if (PyErr_Occurred() && !msg_silent)
850 PyErr_PrintEx(0);
845 EMSG(_("E860: Eval did not return a valid python 3 object")); 851 EMSG(_("E860: Eval did not return a valid python 3 object"));
852 }
846 else 853 else
847 { 854 {
848 if (ConvertFromPyObject(r, rettv) == -1) 855 if (ConvertFromPyObject(r, rettv) == -1)
849 EMSG(_("E861: Failed to convert returned python 3 object to vim value")); 856 EMSG(_("E861: Failed to convert returned python 3 object to vim value"));
850 Py_DECREF(r); 857 Py_DECREF(r);