From 0263bb4076e01dbe88f03d0bae486bfea8bc4155 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 15 Sep 2020 11:17:49 -0700 Subject: [PATCH] Safety fix for old CMP DatFiles --- SabreTools.Library/IO/ClrMameProReader.cs | 24 ++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/SabreTools.Library/IO/ClrMameProReader.cs b/SabreTools.Library/IO/ClrMameProReader.cs index 335f0e05..d7768bd7 100644 --- a/SabreTools.Library/IO/ClrMameProReader.cs +++ b/SabreTools.Library/IO/ClrMameProReader.cs @@ -144,9 +144,12 @@ namespace SabreTools.Library.IO // If we have a name if (key == "name") { - while (++i < linegc.Length && linegc[i] != "size" && linegc[i] != "date" && linegc[i] != "crc") + while (++i < linegc.Length + && linegc[i] != "size" + && linegc[i] != "date" + && linegc[i] != "crc") { - value += $"{linegc[i]}"; + value += $" {linegc[i]}"; } value = value.Trim(); @@ -165,8 +168,23 @@ namespace SabreTools.Library.IO } else { + // Special case for non-quoted names (old DATs only) + if (key == "name" && !linegc[i + 1].Contains("\"")) + { + while (++i < linegc.Length + && linegc[i] != "size" + && linegc[i] != "crc" + && linegc[i] != "md5" + && linegc[i] != "sha1") + { + value += $" {linegc[i]}"; + } + + value = value.Trim(); + i--; + } // Special cases for standalone statuses - if (key == "baddump" || key == "good" || key == "nodump" || key == "verified") + else if (key == "baddump" || key == "good" || key == "nodump" || key == "verified") { value = key; key = "status";