From 7d014bbb8f8a09891999d1be90b73db618d5dd3d Mon Sep 17 00:00:00 2001 From: Alexey 'Cluster' Avdyukhin Date: Fri, 24 Sep 2021 19:13:03 +0300 Subject: null checks, bugfixes --- NesFile.cs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/NesFile.cs b/NesFile.cs index ddcb076..c7b850f 100644 --- a/NesFile.cs +++ b/NesFile.cs @@ -14,27 +14,37 @@ namespace com.clusterrr.Famicom.Containers /// /// PRG data /// - public IEnumerable PRG { get => Array.AsReadOnly(prg); set => prg = value.ToArray(); } + public IEnumerable PRG { + get => Array.AsReadOnly(prg); + set => prg = (value ?? new byte[0]).ToArray(); + } /// /// CHR data (can be null if none) /// - public IEnumerable CHR { get => Array.AsReadOnly(chr); set => chr = value.ToArray(); } + public IEnumerable CHR { + get => Array.AsReadOnly(chr); + set => chr = (value ?? new byte[0]).ToArray(); + } /// /// Trainer (can be null if none) /// public IEnumerable Trainer { - get => Array.AsReadOnly(trainer); set + get => Array.AsReadOnly(trainer); + set { if (value != null && value.Count() != 0 && value.Count() != 512) throw new ArgumentOutOfRangeException("Trainer size must be 512 bytes"); - chr = trainer.ToArray(); + chr = (value ?? new byte[0]).ToArray(); } } /// /// Miscellaneous ROM (NES 2.0 only, can be null if none) /// - public IEnumerable MiscellaneousROM { get => Array.AsReadOnly(miscellaneousROM); set => miscellaneousROM = value.ToArray(); } + public IEnumerable MiscellaneousROM { + get => Array.AsReadOnly(miscellaneousROM); + set => miscellaneousROM = (value ?? new byte[0]).ToArray(); + } /// /// Mapper number /// -- cgit v1.2.3