metadata_editor_info("Reading data from ID3v1 tag");
- if (!strcmp(frameID, "TPE1")) /* artist */
+ //check isNull(). toCString() returns "", when String is NULL.
+ //for "genre", taglib returns "", if genre is out or range.
+ if (!strcmp(frameID, "TPE1") && !(tag1->artist().isNull())) /* artist */
*value = g_strdup(tag1->artist().toCString(true));
- else if (!strcmp(frameID, "TALB")) /* album */
+ else if (!strcmp(frameID, "TALB") && !(tag1->album().isNull())) /* album */
*value = g_strdup(tag1->album().toCString(true));
- else if (!strcmp(frameID, "COMM")) /* comment */
+ else if (!strcmp(frameID, "COMM") && !(tag1->comment().isNull())) /* comment */
*value = g_strdup(tag1->comment().toCString(true));
- else if (!strcmp(frameID, "TCON")) /* genre */
+ else if (!strcmp(frameID, "TCON") && !(tag1->genre().isNull()) && !(tag1->genre().isEmpty())) /* genre */
*value = g_strdup(tag1->genre().toCString(true));
- else if (!strcmp(frameID, "TIT2")) /* title */
+ else if (!strcmp(frameID, "TIT2") && !(tag1->title().isNull())) /* title */
*value = g_strdup(tag1->title().toCString(true));
else if (!strcmp(frameID, "TRCK")) /* track */
*value = g_strdup_printf("%u", tag1->track());
auto it = lst.begin();
auto frame = static_cast<ID3v2::UnsynchronizedLyricsFrame*>(*it);
- *value = g_strdup(frame->text().toCString(true));
+ if (!(frame->text().isNull()))
+ *value = g_strdup(frame->text().toCString(true));
return METADATA_EDITOR_ERROR_NONE;
}