From 976372ff6334db52e2e2beef24794cd4549de592 Mon Sep 17 00:00:00 2001
From: John Regan <john@jrjrtech.com>
Date: Tue, 18 Feb 2020 15:06:52 -0500
Subject: [PATCH] gme: check for empty metadata strings instead of nullptr

Using libgme 0.6.2 on macOS, it appears that gme_info_t strings can be
empty, which creates weird track titles: (001/050)

This adds an additional check for an empty string.
---
 NEWS                                     |  2 ++
 src/decoder/plugins/GmeDecoderPlugin.cxx | 11 ++++++-----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/NEWS b/NEWS
index 4e35fd90a..4648d09a0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
 ver 0.21.21 (not yet released)
+* decoder
+  - gme: ignore empty tags
 
 ver 0.21.20 (2020/02/16)
 * decoder
diff --git a/src/decoder/plugins/GmeDecoderPlugin.cxx b/src/decoder/plugins/GmeDecoderPlugin.cxx
index 64f0a1ad4..fcea526af 100644
--- a/src/decoder/plugins/GmeDecoderPlugin.cxx
+++ b/src/decoder/plugins/GmeDecoderPlugin.cxx
@@ -28,6 +28,7 @@
 #include "fs/AllocatedPath.hxx"
 #include "fs/FileSystem.hxx"
 #include "util/ScopeExit.hxx"
+#include "util/StringCompare.hxx"
 #include "util/StringFormat.hxx"
 #include "util/UriUtil.hxx"
 #include "util/Domain.hxx"
@@ -222,7 +223,7 @@ ScanGmeInfo(const gme_info_t &info, unsigned song_num, int track_count,
 	if (track_count > 1)
 		handler.OnTag(TAG_TRACK, StringFormat<16>("%u", song_num + 1));
 
-	if (info.song != nullptr) {
+	if (!StringIsEmpty(info.song)) {
 		if (track_count > 1) {
 			/* start numbering subtunes from 1 */
 			const auto tag_title =
@@ -234,16 +235,16 @@ ScanGmeInfo(const gme_info_t &info, unsigned song_num, int track_count,
 			handler.OnTag(TAG_TITLE, info.song);
 	}
 
-	if (info.author != nullptr)
+	if (!StringIsEmpty(info.author))
 		handler.OnTag(TAG_ARTIST, info.author);
 
-	if (info.game != nullptr)
+	if (!StringIsEmpty(info.game))
 		handler.OnTag(TAG_ALBUM, info.game);
 
-	if (info.comment != nullptr)
+	if (!StringIsEmpty(info.comment))
 		handler.OnTag(TAG_COMMENT, info.comment);
 
-	if (info.copyright != nullptr)
+	if (!StringIsEmpty(info.copyright))
 		handler.OnTag(TAG_DATE, info.copyright);
 }