diff --git a/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs b/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs index 8d2b973000..bf235ce33b 100644 --- a/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs +++ b/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs @@ -45,6 +45,7 @@ namespace BizHawk.Emulation.Cores.Computers.DOS private int _floppyDiskCount = 0; private int _currentFloppyDisk = 0; private int _currentCDROM = 0; + private bool _disposed; private string GetFullName(IRomAsset rom) => Path.GetFileName(rom.RomPath.SubstringAfter('|')); @@ -606,5 +607,21 @@ namespace BizHawk.Emulation.Cores.Computers.DOS _libDOSBox.GetHDDData(hddArray); return hddArray; } + + public override void Dispose() + { + if (_disposed) return; + _disposed = true; + + if (_discAssets is not null) + { + foreach (var discAsset in _discAssets) + { + discAsset.DiscData.Dispose(); + } + } + + base.Dispose(); + } } }