diff --git a/ChangeLog b/ChangeLog index 0d81d3b189..8d0058fa0a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-02-04 Benjamin Otte + + * gst/sine/gstsinesrc.c: (gst_sinesrc_class_init), + (gst_sinesrc_dispose): + fix memleak by properly disposing sinesrc + 2004-02-04 Julien MOUTTE * gst-libs/gst/xoverlay/xoverlay.c: (gst_x_overlay_expose): diff --git a/gst/sine/gstsinesrc.c b/gst/sine/gstsinesrc.c index a047214e65..556a062db8 100644 --- a/gst/sine/gstsinesrc.c +++ b/gst/sine/gstsinesrc.c @@ -72,6 +72,7 @@ GST_STATIC_PAD_TEMPLATE ( static void gst_sinesrc_class_init (GstSineSrcClass *klass); static void gst_sinesrc_base_init (GstSineSrcClass *klass); static void gst_sinesrc_init (GstSineSrc *src); +static void gst_sinesrc_dispose (GObject *object); static void gst_sinesrc_set_property (GObject *object, guint prop_id, const GValue *value, @@ -161,6 +162,7 @@ gst_sinesrc_class_init (GstSineSrcClass *klass) gobject_class->set_property = gst_sinesrc_set_property; gobject_class->get_property = gst_sinesrc_get_property; + gobject_class->dispose = gst_sinesrc_dispose; gstelement_class->change_state = gst_sinesrc_change_state; } @@ -215,6 +217,17 @@ gst_sinesrc_init (GstSineSrc *src) } +static void +gst_sinesrc_dispose (GObject *object) +{ + GstSineSrc *sinesrc = GST_SINESRC (object); + + g_free (sinesrc->table_data); + sinesrc->table_data = NULL; + + GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object)); +} + static GstCaps * gst_sinesrc_src_fixate (GstPad *pad, const GstCaps *caps) {