From d8109d9de81a776794965d4cc1093ca03bebd6af Mon Sep 17 00:00:00 2001 From: John Ehresman Date: Sun, 11 Apr 2010 22:14:39 -0400 Subject: Fix reference leak when using repr in exception strings --- glib/glibmodule.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'glib/glibmodule.c') diff --git a/glib/glibmodule.c b/glib/glibmodule.c index f794d5d..c529f87 100644 --- a/glib/glibmodule.c +++ b/glib/glibmodule.c @@ -558,9 +558,12 @@ static PyObject* pyglib_set_application_name(PyObject *self, PyObject *arg) { if (!PyString_Check(arg)) { + PyObject *repr = PyObject_Repr(arg); + const char *repr_ptr = (repr ? PyString_AsString(repr) : ""); PyErr_Format(PyExc_TypeError, "first argument must be a string, not '%s'", - PyString_AS_STRING(PyObject_Repr(arg))); + (repr_ptr ? repr_ptr : "")); + Py_CLEAR(repr); return NULL; } g_set_application_name(PyString_AS_STRING(arg)); @@ -585,9 +588,12 @@ static PyObject* pyglib_set_prgname(PyObject *self, PyObject *arg) { if (!PyString_Check(arg)) { + PyObject *repr = PyObject_Repr(arg); + const char *repr_ptr = (repr ? PyString_AsString(repr) : ""); PyErr_Format(PyExc_TypeError, "first argument must be a string, not '%s'", - PyString_AS_STRING(PyObject_Repr(arg))); + (repr_ptr ? repr_ptr : "")); + Py_CLEAR(repr); return NULL; } g_set_prgname(PyString_AS_STRING(arg)); -- cgit