Errors seen in LOGS/pygoocanvas-0.14.1-6.fc17

This is a summary of errors seen when compiling with an experimental static analysis tool

Raw build logs can be seen here

Reference leaks

Code paths in which the reference count of an object is left too high, leading to memory leaks

goocanvas.override _wrap_goo_canvas_item_model_get_child_properties ob_refcnt of '*tuple' is 1 too high
goocanvas.override _wrap_goo_canvas_item_get_child_properties ob_refcnt of '*tuple' is 1 too high

Segfaults within error-handling paths

Code paths in error-handling that will lead to a segmentatation fault (e.g. under low memory conditions)

goocanvas.override _wrap_goo_canvas_points__get_coords calling PyList_SetItem with NULL as argument 1 (ret) at goocanvas.override:1899
goocanvas.override _glist_to_pylist_objs dereferencing NULL (item->ob_refcnt) at goocanvas.override:29
goocanvas.override _glist_to_pylist_objs calling PyList_Append with NULL as argument 1 (dest) at goocanvas.override:28

Possible reference leaks

Code paths in which the reference count of an object might too large - but in which the reference in question came from a function not known to the analyzer.

The analyzer assumes such references are new references, but if the function returns a borrowed reference instead, it's probably not a bug

goocanvas.override _wrap_goo_canvas_item_model_get_child_properties ob_refcnt of '*item' is 1 too high
goocanvas.override _wrap_goo_canvas_item_get_child_properties ob_refcnt of '*item' is 1 too high
goocanvas.c pygoocanvas_add_constants ob_refcnt of new ref from call through function pointer is 1 too high

Returning (PyObject*)NULL without setting an exception

These messages are often false-positives: the analysis tool has no knowledge about internal API calls that can lead to an exception being set
goocanvas.override _wrap_goo_canvas_item_model_install_child_property returning (PyObject*)NULL without setting an exception
goocanvas.override _wrap_goo_canvas_item_model_find_child_property returning (PyObject*)NULL without setting an exception
goocanvas.override _wrap_goo_canvas_item_install_child_property returning (PyObject*)NULL without setting an exception
goocanvas.c _wrap_goo_canvas_pointer_grab returning (PyObject*)NULL without setting an exception
goocanvas.c _wrap_goo_canvas_item_animate returning (PyObject*)NULL without setting an exception
goocanvas.c _wrap_goo_canvas_item_simple_check_in_path returning (PyObject*)NULL without setting an exception
goocanvas.c _wrap_goo_canvas_item_model_animate returning (PyObject*)NULL without setting an exception
goocanvas.override _wrap_goo_canvas_item_model_list_child_properties returning (PyObject*)NULL without setting an exception
goocanvas.override _wrap_goo_canvas_style_set_property returning (PyObject*)NULL without setting an exception
goocanvas.override _wrap_goo_canvas_item_find_child_property returning (PyObject*)NULL without setting an exception
goocanvas.override _wrap_goo_canvas_item_list_child_properties returning (PyObject*)NULL without setting an exception

Implementation notes for gcc-with-cpychecker

The following "Py" functions were used but aren't yet explicitly handled by gcc-with-cpychecker