diff --git a/SabreHelper/RomManipulation.cs b/SabreHelper/RomManipulation.cs index 2374a9c5..05a0d21a 100644 --- a/SabreHelper/RomManipulation.cs +++ b/SabreHelper/RomManipulation.cs @@ -279,15 +279,24 @@ namespace SabreTools.Helper } // Sanitize the hashes from null, hex sizes, and "true blank" strings - rom.CRC = (rom.CRC.StartsWith("0x") ? rom.CRC.Remove(0, 2) : rom.CRC); - rom.CRC = (rom.CRC == "-" ? "" : rom.CRC); - rom.CRC = (rom.CRC == "" ? "" : rom.CRC.PadLeft(8, '0')); - rom.MD5 = (rom.MD5.StartsWith("0x") ? rom.MD5.Remove(0, 2) : rom.MD5); - rom.MD5 = (rom.MD5 == "-" ? "" : rom.MD5); - rom.MD5 = (rom.MD5 == "" ? "" : rom.MD5.PadLeft(32, '0')); - rom.SHA1 = (rom.SHA1.StartsWith("0x") ? rom.SHA1.Remove(0, 2) : rom.SHA1); - rom.SHA1 = (rom.SHA1 == "-" ? "" : rom.SHA1); - rom.SHA1 = (rom.SHA1 == "" ? "" : rom.SHA1.PadLeft(40, '0')); + if (rom.CRC != null) + { + rom.CRC = (rom.CRC.StartsWith("0x") ? rom.CRC.Remove(0, 2) : rom.CRC); + rom.CRC = (rom.CRC == "-" ? "" : rom.CRC); + rom.CRC = (rom.CRC == "" ? "" : rom.CRC.PadLeft(8, '0')); + } + if (rom.MD5 != null) + { + rom.MD5 = (rom.MD5.StartsWith("0x") ? rom.MD5.Remove(0, 2) : rom.MD5); + rom.MD5 = (rom.MD5 == "-" ? "" : rom.MD5); + rom.MD5 = (rom.MD5 == "" ? "" : rom.MD5.PadLeft(32, '0')); + } + if (rom.SHA1 != null) + { + rom.SHA1 = (rom.SHA1.StartsWith("0x") ? rom.SHA1.Remove(0, 2) : rom.SHA1); + rom.SHA1 = (rom.SHA1 == "-" ? "" : rom.SHA1); + rom.SHA1 = (rom.SHA1 == "" ? "" : rom.SHA1.PadLeft(40, '0')); + } // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info if (rom.Type == "rom" && (rom.Size == 0 || rom.Size == -1) && ((rom.CRC == Constants.CRCZero || rom.CRC == "") || rom.MD5 == Constants.MD5Zero || rom.SHA1 == Constants.SHA1Zero)) @@ -554,15 +563,24 @@ namespace SabreTools.Helper }; // Sanitize the hashes from null, hex sizes, and "true blank" strings - rom.CRC = (rom.CRC.StartsWith("0x") ? rom.CRC.Remove(0, 2) : rom.CRC); - rom.CRC = (rom.CRC == "-" ? "" : rom.CRC); - rom.CRC = (rom.CRC == "" ? "" : rom.CRC.PadLeft(8, '0')); - rom.MD5 = (rom.MD5.StartsWith("0x") ? rom.MD5.Remove(0, 2) : rom.MD5); - rom.MD5 = (rom.MD5 == "-" ? "" : rom.MD5); - rom.MD5 = (rom.MD5 == "" ? "" : rom.MD5.PadLeft(32, '0')); - rom.SHA1 = (rom.SHA1.StartsWith("0x") ? rom.SHA1.Remove(0, 2) : rom.SHA1); - rom.SHA1 = (rom.SHA1 == "-" ? "" : rom.SHA1); - rom.SHA1 = (rom.SHA1 == "" ? "" : rom.SHA1.PadLeft(40, '0')); + if (rom.CRC != null) + { + rom.CRC = (rom.CRC.StartsWith("0x") ? rom.CRC.Remove(0, 2) : rom.CRC); + rom.CRC = (rom.CRC == "-" ? "" : rom.CRC); + rom.CRC = (rom.CRC == "" ? "" : rom.CRC.PadLeft(8, '0')); + } + if (rom.MD5 != null) + { + rom.MD5 = (rom.MD5.StartsWith("0x") ? rom.MD5.Remove(0, 2) : rom.MD5); + rom.MD5 = (rom.MD5 == "-" ? "" : rom.MD5); + rom.MD5 = (rom.MD5 == "" ? "" : rom.MD5.PadLeft(32, '0')); + } + if (rom.SHA1 != null) + { + rom.SHA1 = (rom.SHA1.StartsWith("0x") ? rom.SHA1.Remove(0, 2) : rom.SHA1); + rom.SHA1 = (rom.SHA1 == "-" ? "" : rom.SHA1); + rom.SHA1 = (rom.SHA1 == "" ? "" : rom.SHA1.PadLeft(40, '0')); + } // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info if (rom.Type == "rom" && (rom.Size == 0 || rom.Size == -1) && ((rom.CRC == Constants.CRCZero || rom.CRC == "") || rom.MD5 == Constants.MD5Zero || rom.SHA1 == Constants.SHA1Zero))