From: Edward Hervey Date: Thu, 13 Oct 2005 10:51:19 +0000 (+0000) Subject: gst/gstobject.override: Py_VISIT() might make code cleaner... but it doesn't work... X-Git-Tag: 1.19.3~485^2~982 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a31f5476e85007201d410ec14efd54a26faf75e8;p=platform%2Fupstream%2Fgstreamer.git gst/gstobject.override: Py_VISIT() might make code cleaner... but it doesn't work with python < 2.4 Original commit message from CVS: Reviewed by Edward Hervey * gst/gstobject.override: (_wrap_gst_object_tp_traverse): Py_VISIT() might make code cleaner... but it doesn't work with python < 2.4 Closes bug #318692 --- diff --git a/ChangeLog b/ChangeLog index bc0ca25..720ee5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-10-13 Alessandro Decina + + Reviewed by Edward Hervey + + * gst/gstobject.override: (_wrap_gst_object_tp_traverse): + Py_VISIT() might make code cleaner... but it doesn't work with + python < 2.4 + Closes bug #318692 + 2005-10-13 Edward Hervey * examples/gstfile.py: diff --git a/gst/gstobject.override b/gst/gstobject.override index b59d1fa..0e0e8c3 100644 --- a/gst/gstobject.override +++ b/gst/gstobject.override @@ -62,7 +62,8 @@ _wrap_gst_object_tp_traverse(PyGObject *self, visitproc visit, void *arg) GST_LOG_OBJECT(self->obj, "gst.Object.tp_traverse, arg:%p", arg); - Py_VISIT(self->inst_dict); + if (self->inst_dict) ret = visit(self->inst_dict, arg); + if (ret != 0) return ret; GST_LOG_OBJECT(self->obj, "visited self->inst_dict"); @@ -70,9 +71,14 @@ _wrap_gst_object_tp_traverse(PyGObject *self, visitproc visit, void *arg) PyGClosure *closure = tmp->data; GST_DEBUG_OBJECT (self->obj, "visiting closures"); - Py_VISIT(closure->callback); - Py_VISIT(closure->extra_args); - Py_VISIT(closure->swap_data); + if (closure->callback) ret = visit(closure->callback, arg); + if (ret != 0) return ret; + + if (closure->extra_args) ret = visit(closure->extra_args, arg); + if (ret != 0) return ret; + + if (closure->swap_data) ret = visit(closure->swap_data, arg); + if (ret != 0) return ret; } if (self->obj && GST_OBJECT_REFCOUNT_VALUE(self->obj) == 1) {