dvbsuboverlay: fix two minor deinitialization memory leaks
authorJanne Grunau <janne.grunau@collabora.co.uk>
Tue, 4 Jan 2011 13:51:21 +0000 (13:51 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 4 Jan 2011 13:51:55 +0000 (13:51 +0000)
gst/dvbsuboverlay/dvb-sub.c
gst/dvbsuboverlay/gstdvbsuboverlay.c

index eb68106..435de92 100644 (file)
@@ -1352,6 +1352,11 @@ dvb_sub_free (DvbSub * sub)
   /* TODO: Add deinitalization code here */
   /* FIXME: Clear up region_list contents */
   delete_state (sub);
+  while (sub->display_list) {
+    DVBSubRegionDisplay *tmp = sub->display_list->next;
+    g_slice_free (DVBSubRegionDisplay, sub->display_list);
+    sub->display_list = tmp;
+  }
   g_string_free (sub->pes_buffer, TRUE);
   g_slice_free (DvbSub, sub);
 }
index ca6789a..dc2b2d4 100644 (file)
@@ -167,6 +167,10 @@ gst_dvbsub_overlay_flush_subtitles (GstDVBSubOverlay * render)
     dvb_subtitles_free (subs);
   }
 
+  if (render->current_subtitle)
+    dvb_subtitles_free (render->current_subtitle);
+  render->current_subtitle = NULL;
+
   if (render->dvb_sub)
     dvb_sub_free (render->dvb_sub);
 
@@ -251,6 +255,10 @@ gst_dvbsub_overlay_finalize (GObject * object)
   }
   g_queue_free (overlay->pending_subtitles);
 
+  if (overlay->current_subtitle)
+    dvb_subtitles_free (overlay->current_subtitle);
+  overlay->current_subtitle = NULL;
+
   if (overlay->dvb_sub)
     dvb_sub_free (overlay->dvb_sub);