From c0c5119788c24832ee548df7f3f72742c878e906 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Mon, 6 Jul 2009 22:09:30 +0200
Subject: [PATCH] decoder/flac: fix assertion failure in tag_free() call

Initialize flac_data.tag right after flac_data_init().  This way, the
"goto fail" won't jump to the point where tag_free(NULL) can be
called.
---
 NEWS                      | 2 ++
 src/decoder/flac_plugin.c | 3 +--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index 8872c3c1f..d7c6dd630 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
 ver 0.15.1 (2009/??/??)
+* dcecoders:
+  - flac: fix assertion failure in tag_free() call
 * output:
   - httpd: include sys/types.h (fixes Mac OS X)
 * commands:
diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c
index 965a8b46b..1d7a9f868 100644
--- a/src/decoder/flac_plugin.c
+++ b/src/decoder/flac_plugin.c
@@ -394,6 +394,7 @@ flac_decode_internal(struct decoder * decoder,
 	if (!(flac_dec = flac_new()))
 		return;
 	flac_data_init(&data, decoder, input_stream);
+	data.tag = tag_new();
 
 #if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
         if(!FLAC__stream_decoder_set_metadata_respond(flac_dec, FLAC__METADATA_TYPE_VORBIS_COMMENT))
@@ -422,8 +423,6 @@ flac_decode_internal(struct decoder * decoder,
 		}
 	}
 
-	data.tag = tag_new();
-
 	if (!flac_process_metadata(flac_dec)) {
 		err = "problem reading metadata";
 		goto fail;