From 30b18db2062d54bad9b2d7055d091d2fec307434 Mon Sep 17 00:00:00 2001 From: Rebecca Wallander Date: Thu, 25 Jun 2020 22:06:58 +0200 Subject: [PATCH] Fix multi-file CDRWin image --- Aaru.Images/CDRWin/Read.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Aaru.Images/CDRWin/Read.cs b/Aaru.Images/CDRWin/Read.cs index 4208a3d58..4bbdb34f7 100644 --- a/Aaru.Images/CDRWin/Read.cs +++ b/Aaru.Images/CDRWin/Read.cs @@ -1140,6 +1140,8 @@ namespace Aaru.DiscImages Partitions = new List(); ulong partitionSequence = 0; + ulong previousPartitionsSize = 0; + string previousFile = _discImage.Tracks[0].TrackFile.DataFilter.GetBasePath(); _offsetMap = new Dictionary(); @@ -1165,15 +1167,22 @@ namespace Aaru.DiscImages partition.Type = _discImage.Tracks[i].TrackType; partitionSequence++; + + if(_discImage.Tracks[i].TrackFile.DataFilter.GetBasePath() != previousFile){ + previousPartitionsSize += _discImage.Tracks[i - 1].Sectors; + previousFile = _discImage.Tracks[i].TrackFile.DataFilter.GetBasePath(); + } if(_discImage.Tracks[i].Indexes.TryGetValue(0, out int idx0)) - _offsetMap.Add(_discImage.Tracks[i].Sequence, (ulong)idx0); + _offsetMap.Add(_discImage.Tracks[i].Sequence, (ulong)idx0 + previousPartitionsSize); else if(_discImage.Tracks[i].Sequence > 1) _offsetMap.Add(_discImage.Tracks[i].Sequence, - (ulong)(_discImage.Tracks[i].Indexes[1] - _discImage.Tracks[i].Pregap)); + (ulong)(_discImage.Tracks[i].Indexes[1] - _discImage.Tracks[i].Pregap) + + previousPartitionsSize); else - _offsetMap.Add(_discImage.Tracks[i].Sequence, (ulong)_discImage.Tracks[i].Indexes[1]); - + _offsetMap.Add(_discImage.Tracks[i].Sequence, (ulong)_discImage.Tracks[i].Indexes[1] + + previousPartitionsSize); + Partitions.Add(partition); }