wavparse: clean up adapter properly
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 31 Aug 2009 12:38:08 +0000 (13:38 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 31 Aug 2009 12:40:14 +0000 (13:40 +0100)
Reflow code so we don't try to clear or re-use an already-freed adapter.

gst/wavparse/gstwavparse.c

index 1a6b62d..abcbee1 100644 (file)
@@ -2440,23 +2440,20 @@ gst_wavparse_sink_activate (GstPad * sinkpad)
   GstWavParse *wav = GST_WAVPARSE (gst_pad_get_parent (sinkpad));
   gboolean res;
 
-  if (wav->adapter)
+  if (wav->adapter) {
+    gst_adapter_clear (wav->adapter);
     g_object_unref (wav->adapter);
+    wav->adapter = NULL;
+  }
 
   if (gst_pad_check_pull_range (sinkpad)) {
     GST_DEBUG ("going to pull mode");
     wav->streaming = FALSE;
-    if (wav->adapter) {
-      gst_adapter_clear (wav->adapter);
-      g_object_unref (wav->adapter);
-    }
-    wav->adapter = NULL;
     res = gst_pad_activate_pull (sinkpad, TRUE);
   } else {
     GST_DEBUG ("going to push (streaming) mode");
     wav->streaming = TRUE;
-    if (wav->adapter == NULL)
-      wav->adapter = gst_adapter_new ();
+    wav->adapter = gst_adapter_new ();
     res = gst_pad_activate_push (sinkpad, TRUE);
   }
   gst_object_unref (wav);