IL2CPP: Fix duplicate key / key not found errors introduced in previous commit
This commit is contained in:
@@ -164,9 +164,9 @@ namespace Il2CppInspector
|
|||||||
// Guestimate method end addresses
|
// Guestimate method end addresses
|
||||||
methodPointers = new Dictionary<ulong, ulong>(sortedMethodPointers.Count);
|
methodPointers = new Dictionary<ulong, ulong>(sortedMethodPointers.Count);
|
||||||
for (var i = 0; i < sortedMethodPointers.Count - 1; i++)
|
for (var i = 0; i < sortedMethodPointers.Count - 1; i++)
|
||||||
methodPointers.Add(sortedMethodPointers[i], sortedMethodPointers[i + 1]);
|
methodPointers.TryAdd(sortedMethodPointers[i], sortedMethodPointers[i + 1]);
|
||||||
// The last method end pointer will be incorrect but there is no way of calculating it
|
// The last method end pointer will be incorrect but there is no way of calculating it
|
||||||
methodPointers.Add(sortedMethodPointers[^1], sortedMethodPointers[^1]);
|
methodPointers.TryAdd(sortedMethodPointers[^1], sortedMethodPointers[^1]);
|
||||||
|
|
||||||
// Organize custom attribute indices
|
// Organize custom attribute indices
|
||||||
if (Version >= 24.1) {
|
if (Version >= 24.1) {
|
||||||
@@ -192,7 +192,7 @@ namespace Il2CppInspector
|
|||||||
|
|
||||||
// Global method pointer array
|
// Global method pointer array
|
||||||
if (Version <= 24.1) {
|
if (Version <= 24.1) {
|
||||||
start = Binary.GlobalMethodPointers[methodDef.methodIndex] & 0xffff_ffff_ffff_fffe;
|
start = Binary.GlobalMethodPointers[methodDef.methodIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Per-module method pointer array uses the bottom 24 bits of the method's metadata token
|
// Per-module method pointer array uses the bottom 24 bits of the method's metadata token
|
||||||
@@ -206,7 +206,7 @@ namespace Il2CppInspector
|
|||||||
// This probably means it has been optimized away by the compiler, or is an unused generic method
|
// This probably means it has been optimized away by the compiler, or is an unused generic method
|
||||||
try {
|
try {
|
||||||
// Remove ARM Thumb marker LSB if necessary
|
// Remove ARM Thumb marker LSB if necessary
|
||||||
start = Binary.ModuleMethodPointers[module][method - 1] & 0xffff_ffff_ffff_fffe;
|
start = Binary.ModuleMethodPointers[module][method - 1];
|
||||||
}
|
}
|
||||||
catch (IndexOutOfRangeException) {
|
catch (IndexOutOfRangeException) {
|
||||||
return null;
|
return null;
|
||||||
@@ -218,7 +218,7 @@ namespace Il2CppInspector
|
|||||||
|
|
||||||
// Consider the end of the method to be the start of the next method (or zero)
|
// Consider the end of the method to be the start of the next method (or zero)
|
||||||
// The last method end will be wrong but there is no way to calculate it
|
// The last method end will be wrong but there is no way to calculate it
|
||||||
return (start, methodPointers[start]);
|
return (start & 0xffff_ffff_ffff_fffe, methodPointers[start]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Il2CppInspector> LoadFromFile(string codeFile, string metadataFile) {
|
public static List<Il2CppInspector> LoadFromFile(string codeFile, string metadataFile) {
|
||||||
|
|||||||
Reference in New Issue
Block a user