diff --git a/CUETools.CDImage/CDImage.cs b/CUETools.CDImage/CDImage.cs index c909b73..e0b7f3c 100644 --- a/CUETools.CDImage/CDImage.cs +++ b/CUETools.CDImage/CDImage.cs @@ -432,7 +432,8 @@ namespace CUETools.CDImage for (int iTrack = 1; iTrack < AudioTracks; iTrack++) mbSB.AppendFormat("{0:X8}", _tracks[_firstAudio + iTrack].Start - _tracks[_firstAudio].Start); mbSB.AppendFormat("{0:X8}", _tracks[_firstAudio + (int)AudioTracks - 1].End + 1 - _tracks[_firstAudio].Start); - mbSB.Append(new string('0', (100 - (int)AudioTracks) * 8)); + // Use Math.Max() to avoid negative count number in case of non-standard CUE sheet with more than 99 tracks. + mbSB.Append(new string('0', Math.Max(0, (100 - (int)AudioTracks) * 8))); byte[] hashBytes = (new SHA1CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(mbSB.ToString())); return Convert.ToBase64String(hashBytes).Replace('+', '.').Replace('/', '_').Replace('=', '-'); }