From 3f347c7edd0796fb033bb58f15017f1f6c6c5ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sun, 19 Jul 2009 23:16:07 +0100 Subject: kate: make sure to free some more stuff --- ext/kate/gstkateparse.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ext/kate/gstkateparse.c') diff --git a/ext/kate/gstkateparse.c b/ext/kate/gstkateparse.c index 5cf8ec48..eb0d2b08 100644 --- a/ext/kate/gstkateparse.c +++ b/ext/kate/gstkateparse.c @@ -193,6 +193,7 @@ gst_kate_parse_push_headers (GstKateParse * parse) if (G_UNLIKELY (ret < 0)) { GST_WARNING_OBJECT (parse, "kate_decode_headerin returned %d", ret); } + /* takes ownership of outbuf, which was previously in parse->streamheader */ outbuf_list = g_list_append (outbuf_list, outbuf); headers = headers->next; } @@ -210,6 +211,8 @@ gst_kate_parse_push_headers (GstKateParse * parse) } g_list_free (outbuf_list); + g_list_free (parse->streamheader); + parse->streamheader = NULL; parse->streamheader_sent = TRUE; @@ -575,6 +578,16 @@ error: #endif } +static void +gst_kate_parse_free_stream_headers (GstKateParse * parse) +{ + while (parse->streamheader != NULL) { + gst_buffer_unref (GST_BUFFER (parse->streamheader->data)); + parse->streamheader = g_list_delete_link (parse->streamheader, + parse->streamheader); + } +} + static GstStateChangeReturn gst_kate_parse_change_state (GstElement * element, GstStateChange transition) { @@ -607,6 +620,7 @@ gst_kate_parse_change_state (GstElement * element, GstStateChange transition) parse->buffer_queue = NULL; g_queue_free (parse->event_queue); parse->event_queue = NULL; + gst_kate_parse_free_stream_headers (parse); break; default: -- cgit v1.2.1