From a61871360f3920a54fdb1acaaccb6cd5a4e61f85 Mon Sep 17 00:00:00 2001 From: Yann Vernier Date: Tue, 27 Dec 2005 15:28:09 +0000 Subject: [PATCH] Fix crash in EXPP_(int|obj)Error. These functions are redundant; they only differ by return type, so it's easier to just call PyErr_Format and return appropriately. --- source/blender/python/api2_2x/gen_utils.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/source/blender/python/api2_2x/gen_utils.c b/source/blender/python/api2_2x/gen_utils.c index 4e42c06d2a8..4460a93d38f 100644 --- a/source/blender/python/api2_2x/gen_utils.c +++ b/source/blender/python/api2_2x/gen_utils.c @@ -176,27 +176,29 @@ int EXPP_ReturnIntError( PyObject * type, char *error_msg ) int EXPP_intError(PyObject *type, const char *format, ...) { - char *error = ""; + PyObject *error; va_list vlist; va_start(vlist, format); - vsprintf(error, format, vlist); + error = PyString_FromFormatV(format, vlist); va_end(vlist); - PyErr_SetString(type, error); + PyErr_SetObject(type, error); + Py_DECREF(error); return -1; } //Like EXPP_ReturnPyObjError but takes a printf format string and multiple arguments PyObject *EXPP_objError(PyObject *type, const char *format, ...) { - char *error = ""; + PyObject *error; va_list vlist; va_start(vlist, format); - vsprintf(error, format, vlist); + error = PyString_FromFormatV(format, vlist); va_end(vlist); - PyErr_SetString(type, error); + PyErr_SetObject(type, error); + Py_DECREF(error); return NULL; }