2006-07-12 Edward Hervey <edward@fluendo.com>
+ * ext/vorbis/vorbisdec.c: (vorbis_dec_finalize),
+ (vorbis_handle_comment_packet):
+ gst_tag_list_merge() returns a new object. Take that into account when
+ using it. This avoids memleak.
+ Revert previous commit which is not needed.
+
+2006-07-12 Edward Hervey <edward@fluendo.com>
+
* ext/vorbis/vorbisdec.c: (vorbis_dec_finalize):
Reset the decoder in finalize so that all fields get cleared.
static gboolean vorbis_dec_sink_query (GstPad * pad, GstQuery * query);
-static void gst_vorbis_dec_reset (GstVorbisDec * dec);
-
static void
gst_vorbis_dec_base_init (gpointer g_class)
{
vorbis_comment_clear (&vd->vc);
vorbis_info_clear (&vd->vi);
- gst_vorbis_dec_reset (vd);
-
G_OBJECT_CLASS (parent_class)->finalize (object);
}
{
guint bitrate = 0;
gchar *encoder = NULL;
+ GstTagList *list;
GstBuffer *buf;
GST_DEBUG_OBJECT (vd, "parsing comment packet");
buf = gst_buffer_new_and_alloc (packet->bytes);
GST_BUFFER_DATA (buf) = packet->packet;
- vd->taglist =
- gst_tag_list_merge (vd->taglist,
+ list =
gst_tag_list_from_vorbiscomment_buffer (buf, (guint8 *) "\003vorbis", 7,
- &encoder), GST_TAG_MERGE_REPLACE);
+ &encoder);
+
+ vd->taglist = gst_tag_list_merge (vd->taglist, list, GST_TAG_MERGE_REPLACE);
+ gst_tag_list_free (list);
gst_buffer_unref (buf);
if (!vd->taglist) {