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> 2013-05-21 Pedro Alves <palves@redhat.com>
* python/py-utils.c (py_decref): Remove extra braces. * 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. */ /* Find the constructor. */
printer = find_pretty_printer (val_obj); printer = find_pretty_printer (val_obj);
Py_DECREF (val_obj); Py_DECREF (val_obj);
if (printer == NULL)
goto done;
make_cleanup_py_decref (printer); make_cleanup_py_decref (printer);
if (! printer || printer == Py_None) if (printer == Py_None)
goto done; goto done;
/* If we are printing a map, we want some special formatting. */ /* If we are printing a map, we want some special formatting. */

View file

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