gst/base/gstbasetransform.c: Fix a pretty good memleak.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Mon, 8 Aug 2005 15:08:14 +0000 (15:08 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Mon, 8 Aug 2005 15:08:14 +0000 (15:08 +0000)
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_buffer_alloc):
Fix a pretty good memleak.

ChangeLog
gst/base/gstbasetransform.c
libs/gst/base/gstbasetransform.c

index 754fe5e..e6d6cda 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/base/gstbasetransform.c: (gst_base_transform_buffer_alloc):
+         Fix a pretty good memleak.
+
 2005-08-08  Tim-Philipp Müller  <tim at centricular dot net>
 
        * gst/gstiterator.h:
index d4b48f0..3dea71c 100644 (file)
@@ -535,6 +535,9 @@ gst_base_transform_buffer_alloc (GstPad * pad, guint64 offset, guint size,
       goto unknown_size;
     }
 
+    if (*buf) {
+      gst_buffer_unref (*buf);
+    }
     *buf = gst_buffer_new_and_alloc (got_size);
     gst_buffer_set_caps (*buf, sinkcaps);
     GST_BUFFER_OFFSET (*buf) = offset;
@@ -549,14 +552,20 @@ gst_base_transform_buffer_alloc (GstPad * pad, guint64 offset, guint size,
 not_configured:
   {
     /* let the default allocator handle it */
-    *buf = NULL;
+    if (*buf) {
+      gst_buffer_unref (*buf);
+      *buf = NULL;
+    }
     gst_object_unref (trans);
     return GST_FLOW_OK;
   }
 unknown_size:
   {
     /* let the default allocator handle it */
-    *buf = NULL;
+    if (*buf) {
+      gst_buffer_unref (*buf);
+      *buf = NULL;
+    }
     gst_object_unref (trans);
     return GST_FLOW_OK;
   }
index d4b48f0..3dea71c 100644 (file)
@@ -535,6 +535,9 @@ gst_base_transform_buffer_alloc (GstPad * pad, guint64 offset, guint size,
       goto unknown_size;
     }
 
+    if (*buf) {
+      gst_buffer_unref (*buf);
+    }
     *buf = gst_buffer_new_and_alloc (got_size);
     gst_buffer_set_caps (*buf, sinkcaps);
     GST_BUFFER_OFFSET (*buf) = offset;
@@ -549,14 +552,20 @@ gst_base_transform_buffer_alloc (GstPad * pad, guint64 offset, guint size,
 not_configured:
   {
     /* let the default allocator handle it */
-    *buf = NULL;
+    if (*buf) {
+      gst_buffer_unref (*buf);
+      *buf = NULL;
+    }
     gst_object_unref (trans);
     return GST_FLOW_OK;
   }
 unknown_size:
   {
     /* let the default allocator handle it */
-    *buf = NULL;
+    if (*buf) {
+      gst_buffer_unref (*buf);
+      *buf = NULL;
+    }
     gst_object_unref (trans);
     return GST_FLOW_OK;
   }