@@ -51,7 +51,7 @@ public Index(DirectoryInfo gameDirectory)
51
51
/// </summary>
52
52
/// <param name="dataFile">The data file to update the index for.</param>
53
53
/// <param name="datNum">The dat number to update to.</param>
54
- public void UpdateIndexDatCount ( XivDataFile dataFile , int datNum )
54
+ public void UpdateIndexDatCount ( XivDataFile dataFile , int datNum , bool alreadySemaphoreLocked = false )
55
55
{
56
56
var datCount = ( byte ) ( datNum + 1 ) ;
57
57
@@ -63,7 +63,10 @@ public void UpdateIndexDatCount(XivDataFile dataFile, int datNum)
63
63
64
64
foreach ( var indexPath in indexPaths )
65
65
{
66
- _semaphoreSlim . Wait ( ) ;
66
+ if ( ! alreadySemaphoreLocked )
67
+ {
68
+ _semaphoreSlim . Wait ( ) ;
69
+ }
67
70
try
68
71
{
69
72
using ( var bw = new BinaryWriter ( File . OpenWrite ( indexPath ) ) )
@@ -74,7 +77,10 @@ public void UpdateIndexDatCount(XivDataFile dataFile, int datNum)
74
77
}
75
78
finally
76
79
{
77
- _semaphoreSlim . Release ( ) ;
80
+ if ( ! alreadySemaphoreLocked )
81
+ {
82
+ _semaphoreSlim . Release ( ) ;
83
+ }
78
84
}
79
85
}
80
86
}
@@ -790,6 +796,10 @@ public async Task SaveIndexFile(IndexFile index, bool alreadySemaphoreLocked = f
790
796
}
791
797
}
792
798
799
+
800
+ var _dat = new Dat ( XivCache . GameInfo . GameDirectory ) ;
801
+ var largestDatNum = _dat . GetLargestDatNumber ( index . DataFile ) ;
802
+ UpdateIndexDatCount ( index . DataFile , largestDatNum , true ) ;
793
803
}
794
804
finally
795
805
{
@@ -798,10 +808,6 @@ public async Task SaveIndexFile(IndexFile index, bool alreadySemaphoreLocked = f
798
808
_semaphoreSlim . Release ( ) ;
799
809
}
800
810
}
801
-
802
- var _dat = new Dat ( XivCache . GameInfo . GameDirectory ) ;
803
- var largestDatNum = _dat . GetLargestDatNumber ( index . DataFile ) ;
804
- UpdateIndexDatCount ( index . DataFile , largestDatNum ) ;
805
811
}
806
812
807
813
0 commit comments