ext/cdio/gstcdiocddasrc.c: Make sure we always destroy our libcdio handle.
authorJan Schmidt <thaytan@mad.scientist.com>
Sun, 4 Mar 2007 17:13:19 +0000 (17:13 +0000)
committerJan Schmidt <thaytan@mad.scientist.com>
Sun, 4 Mar 2007 17:13:19 +0000 (17:13 +0000)
Original commit message from CVS:
* ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_open),
(gst_cdio_cdda_src_finalize):
Make sure we always destroy our libcdio handle.

ext/cdio/gstcdiocddasrc.c

index 0e8967e..ca3258e 100644 (file)
@@ -287,6 +287,9 @@ not_audio:
   {
     GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
         (_("Disc is not an Audio CD.")), ("discmode: %d", (gint) discmode));
+
+    cdio_destroy (src->cdio);
+    src->cdio = NULL;
     return FALSE;
   }
 }
@@ -312,6 +315,13 @@ gst_cdio_cdda_src_init (GstCdioCddaSrc * src, GstCdioCddaSrcClass * klass)
 static void
 gst_cdio_cdda_src_finalize (GObject * obj)
 {
+  GstCdioCddaSrc *src = GST_CDIO_CDDA_SRC (obj);
+
+  if (src->cdio) {
+    cdio_destroy (src->cdio);
+    src->cdio = NULL;
+  }
+
   G_OBJECT_CLASS (parent_class)->finalize (obj);
 }