Skip to content

Commit 6a81250

Browse files
committed
oops
1 parent f5da78d commit 6a81250

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

TACTLib/Core/EncodingHandler.cs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public EncodingHandler(ClientHandler client) : this(client,
3030
public EncodingHandler(ClientHandler client, FullEKey eKey, int eSize) : this(client.OpenEKey(eKey, eSize))
3131
{
3232
}
33-
33+
3434
public EncodingHandler(Stream? stream, bool leaveOpen=false)
3535
{
3636
ArgumentNullException.ThrowIfNull(stream);
@@ -56,7 +56,7 @@ public EncodingHandler(Stream? stream, bool leaveOpen=false)
5656
CKeyEKeyHeaderKeys = cKeyEKeyHeaders.Select(x => x.FirstKey).ToArray();
5757
CKeyEKeyPages_CKeys = new LinearCKeyEntry[cKeyEKeyHeaders.Length][];
5858
CKeyEKeyPages_EKeys = new FullEKey[cKeyEKeyHeaders.Length][][];
59-
59+
6060
for (var pageIdx = 0; pageIdx < cKeyEKeyHeaders.Length; pageIdx++) {
6161
var page = new byte[cKeyEKeyPageSize * 1024];
6262
stream.DefinitelyRead(page);
@@ -69,27 +69,27 @@ public EncodingHandler(Stream? stream, bool leaveOpen=false)
6969
var pageEntryCount = page.Length / structSize; // (approx)
7070
CKeyEKeyPages_CKeys[pageIdx] = new LinearCKeyEntry[pageEntryCount];
7171
CKeyEKeyPages_EKeys[pageIdx] = new FullEKey[pageEntryCount][];
72-
72+
7373
var pageSpan = (ReadOnlySpan<byte>)page;
7474
var entryIdx = 0;
7575
while (true) {
7676
if (pageSpan.Length < structSize) break;
7777
var foundEntry = SpanHelper.ReadStruct<CKeyEKeyEntry>(ref pageSpan);
7878
if (foundEntry.EKeyCount == 0) break; // end
79-
79+
8080
var ekeyArray = SpanHelper.ReadArray<FullEKey>(ref pageSpan, foundEntry.EKeyCount);
81-
81+
8282
CKeyEKeyPages_CKeys[pageIdx][entryIdx] = new LinearCKeyEntry {
8383
CKey = foundEntry.CKey,
8484
ContentSize = foundEntry.ContentSize
8585
};
8686
CKeyEKeyPages_EKeys[pageIdx][entryIdx] = ekeyArray.ToArray();
8787
entryIdx++;
8888
}
89-
89+
9090
CKeyEKeyPages_CKeys[pageIdx] = CKeyEKeyPages_CKeys[pageIdx].AsSpan(0, entryIdx).ToArray();
9191
}
92-
92+
9393
var eKeyESpecPageSize = header.m_eKeyESpecPageSize.ToInt();
9494
var eKeyEspecPageCount = header.m_eKeyEspecPageCount.ToInt();
9595
var eKeyESpecHeaders = reader.ReadArray<PageHeader>((int)eKeyEspecPageCount);
@@ -98,7 +98,7 @@ public EncodingHandler(Stream? stream, bool leaveOpen=false)
9898
for (var pageIdx = 0; pageIdx < eKeyESpecHeaders.Length; pageIdx++) {
9999
var page = new byte[eKeyESpecPageSize * 1024];
100100
stream.DefinitelyRead(page);
101-
101+
102102
var entries = MemoryMarshal.Cast<byte, EKeyESpecEntry>(page);
103103
for (var entryIdx = 0; entryIdx < entries.Length; entryIdx++)
104104
{
@@ -113,15 +113,15 @@ public EncodingHandler(Stream? stream, bool leaveOpen=false)
113113

114114
private bool FindCKey(CKey cKey, out int pageIndex, out int foundIndex) {
115115
var searchResult = Array.BinarySearch(CKeyEKeyHeaderKeys, cKey);
116-
116+
117117
if (searchResult >= 0) {
118118
pageIndex = searchResult;
119119
} else {
120120
var firstElementLarger = ~searchResult;
121121
pageIndex = firstElementLarger - 1;
122122
if (pageIndex < 0) goto NOT_FOUND;
123123
}
124-
124+
125125
var speculativeEntry = new LinearCKeyEntry {
126126
CKey = cKey
127127
};
@@ -131,7 +131,7 @@ private bool FindCKey(CKey cKey, out int pageIndex, out int foundIndex) {
131131
if (foundIndex >= 0) {
132132
return true;
133133
}
134-
134+
135135
NOT_FOUND:
136136
foundIndex = 0;
137137
pageIndex = 0;
@@ -141,11 +141,13 @@ private bool FindCKey(CKey cKey, out int pageIndex, out int foundIndex) {
141141
public bool TryGetEncodingEntry(CKey cKey, out ReadOnlySpan<FullEKey> entry) {
142142
if (!FindCKey(cKey, out var pageIndex, out var foundIndex)) {
143143
entry = Array.Empty<FullEKey>();
144-
Logger.Debug(nameof(EncodingHandler), $"Unable to get EKey for {cKey.ToHexString()} (This is okay, can be due to bundle encryption)");
144+
if (cKey != default) {
145+
Logger.Debug(nameof(EncodingHandler), $"Unable to get EKey for {cKey.ToHexString()} (This is okay, can be due to bundle encryption)");
146+
}
145147
//Console.Out.WriteLine($"cant get ekey for {cKey.ToHexString()}. a o");
146148
return false;
147149
}
148-
150+
149151
entry = CKeyEKeyPages_EKeys[pageIndex][foundIndex];
150152
return true;
151153
}
@@ -203,11 +205,11 @@ public IEnumerable<string> GetESpecs() {
203205
var terminatorIdx = span.IndexOf((byte)0);
204206
Debug.Assert(terminatorIdx != -1);
205207
Debug.Assert(terminatorIdx != 0);
206-
208+
207209
var especAscii = span.Slice(0, terminatorIdx);
208210
var espec = Encoding.ASCII.GetString(especAscii);
209211
yield return espec;
210-
212+
211213
pos += terminatorIdx + 1;
212214
}
213215
}
@@ -257,7 +259,7 @@ public int CompareTo(CKeyEKeyEntry other) {
257259
return CKey.CompareTo(other.CKey);
258260
}
259261
}
260-
262+
261263
private struct LinearCKeyEntry : IComparable<LinearCKeyEntry> {
262264
public CKey CKey;
263265
public UInt32BE ContentSize;
@@ -267,4 +269,4 @@ public int CompareTo(LinearCKeyEntry other) {
267269
}
268270
}
269271
}
270-
}
272+
}

TACTLib/Core/Key/FullKey.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public static int FullKeyCompare(FullKey left, FullKey right) {
7777

7878
public bool Equals(FullKey other) {
7979
var span = MemoryMarshal.Cast<byte, ulong>(this);
80-
var otherSpan = MemoryMarshal.Cast<byte, ulong>(this);
80+
var otherSpan = MemoryMarshal.Cast<byte, ulong>(other);
8181
return span[0] == otherSpan[0] && span[1] == otherSpan[1];
8282
}
8383

0 commit comments

Comments
 (0)