py_decref: Don't check for NULL before calling Py_DECREF.

The only difference between Py_DECREF and Py_XDECREF is that the latter allows passing
in a NULL object, while the former prohibits it.  Given that, it's natural to expect
the same from py_decref vs py_xdecref.

gdb/
2013-05-21  Pedro Alves  <palves@redhat.com>

	* python/py-prettyprint.c (apply_val_pretty_printer): Check
	whether PRINTER is NULL before installing a Py_DECREF cleanup.
	* python/py-utils.c (py_decref): Don't check for NULL before
	calling Py_DECREF.
This commit is contained in:
Pedro Alves 2013-05-21 20:53:21 +00:00
parent 1915daebe6
commit c8c735b963
3 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2013-05-21 Pedro Alves <palves@redhat.com>
* python/py-prettyprint.c (apply_val_pretty_printer): Check
whether PRINTER is NULL before installing a Py_DECREF cleanup.
* python/py-utils.c (py_decref): Don't check for NULL before
calling Py_DECREF.
2013-05-21 Pedro Alves <palves@redhat.com>
* python/py-utils.c (py_decref): Remove extra braces.

View File

@ -735,8 +735,12 @@ apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr,
/* Find the constructor. */
printer = find_pretty_printer (val_obj);
Py_DECREF (val_obj);
if (printer == NULL)
goto done;
make_cleanup_py_decref (printer);
if (! printer || printer == Py_None)
if (printer == Py_None)
goto done;
/* If we are printing a map, we want some special formatting. */

View File

@ -31,8 +31,7 @@ py_decref (void *p)
{
PyObject *py = p;
if (py)
Py_DECREF (py);
Py_DECREF (py);
}
/* Return a new cleanup which will decrement the Python object's