Skip to content

Commit bab4278

Browse files
committed
Better linking in IS-CAB open set
1 parent 013d18a commit bab4278

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ public partial class InstallShieldCabinet : WrapperBase<Cabinet>
7878
/// <remarks>Only used in multi-file</remarks>
7979
public InstallShieldCabinet? Prev { get; set; }
8080

81+
/// <summary>
82+
/// Volume index ID, 0 for headers
83+
/// </summary>
84+
/// <remarks>Only used in multi-file</remarks>
85+
public ushort VolumeID { get; set; }
86+
8187
#endregion
8288

8389
#region Constants
@@ -196,7 +202,7 @@ public InstallShieldCabinet(Cabinet? model, Stream? data)
196202
// Loop until there are no parts left
197203
bool iterate = true;
198204
InstallShieldCabinet? previous = null;
199-
for (int i = 1; iterate; i++)
205+
for (ushort i = 1; iterate; i++)
200206
{
201207
var file = OpenFileForReading(pattern, i, HEADER_SUFFIX);
202208
if (file != null)
@@ -207,14 +213,21 @@ public InstallShieldCabinet(Cabinet? model, Stream? data)
207213
if (file == null)
208214
break;
209215

210-
var header = Create(file);
211-
if (header == null)
216+
var current = Create(file);
217+
if (current == null)
212218
break;
213219

220+
current.VolumeID = i;
214221
if (previous != null)
215-
previous.Next = header;
222+
{
223+
previous.Next = current;
224+
current.Prev = previous;
225+
}
216226
else
217-
previous = set = header;
227+
{
228+
set = current;
229+
previous = current;
230+
}
218231
}
219232

220233
return set;

0 commit comments

Comments
 (0)