tag: id3v2: Never output a tag with a null contents string.
authorJan Schmidt <thaytan@mad.scientist.com>
Fri, 3 Feb 2006 13:06:24 +0000 (13:06 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sun, 14 Aug 2011 23:10:26 +0000 (00:10 +0100)
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_text_identification_frame),
(id3v2_tag_to_taglist), (id3v2_genre_string_to_taglist),
(id3v2_genre_fields_to_taglist):
Never output a tag with a null contents string.

gst-libs/gst/tag/id3v2frames.c

index c4c41ff00d210502749c4f0efb477104fc348202..3ebfc07d713e257a651af3fdbf8cdf11d41a0912 100644 (file)
@@ -232,6 +232,16 @@ parse_text_identification_frame (ID3TagsWorking * work)
   encoding = work->parse_data[0];
   parse_split_strings (encoding, (gchar *) work->parse_data + 1,
       work->parse_size - 1, &fields);
+  if (fields) {
+    if (fields->len > 0) {
+      GST_LOG ("Read %d fields from Text ID frame of size %d. First is '%s'",
+          fields->len, work->parse_size - 1,
+          g_array_index (fields, gchar *, 0));
+    } else {
+      GST_LOG ("Read %d fields from Text ID frame of size %d", fields->len,
+          work->parse_size - 1);
+    }
+  }
 
   return fields;
 }
@@ -243,6 +253,9 @@ id3v2_tag_to_taglist (ID3TagsWorking * work, const gchar * tag_name,
   GType tag_type = gst_tag_get_type (tag_name);
   GstTagList *tag_list = work->tags;
 
+  if (tag_str == NULL)
+    return FALSE;
+
   switch (tag_type) {
     case G_TYPE_UINT:
     {
@@ -371,8 +384,7 @@ id3v2_genre_string_to_taglist (ID3TagsWorking * work, const gchar * tag_name,
   /* If it's a number, it might be a defined genre */
   if (id3v2_are_digits (tag_str, len)) {
     tag_str = gst_tag_id3_genre_get (strtol (tag_str, NULL, 10));
-    if (tag_str != NULL)
-      return id3v2_tag_to_taglist (work, tag_name, tag_str);
+    return id3v2_tag_to_taglist (work, tag_name, tag_str);
   }
   /* Otherwise it might be "RX" or "CR" */
   if (len == 2) {
@@ -434,7 +446,7 @@ id3v2_genre_fields_to_taglist (ID3TagsWorking * work, const gchar * tag_name,
       }
     }
 
-    if (len > 0)
+    if (len > 0 && tag_str != NULL)
       result |= id3v2_genre_string_to_taglist (work, tag_name, tag_str, len);
   }
   return result;