diff --git a/LibCpp2IL/Metadata/Il2CppMetadata.cs b/LibCpp2IL/Metadata/Il2CppMetadata.cs index 58139377..b5a389ed 100644 --- a/LibCpp2IL/Metadata/Il2CppMetadata.cs +++ b/LibCpp2IL/Metadata/Il2CppMetadata.cs @@ -420,7 +420,8 @@ private Il2CppMetadata(MemoryStream stream, UnityVersion unityVersion, float met foreach (var il2CppFieldDefaultValue in fieldDefaultValues) { _fieldDefaultValueLookup[il2CppFieldDefaultValue.fieldIndex] = il2CppFieldDefaultValue; - _fieldDefaultLookupNew[GetFieldDefinitionFromIndex(il2CppFieldDefaultValue.fieldIndex)] = il2CppFieldDefaultValue; + if (il2CppFieldDefaultValue.fieldIndex.IsNonNull) + _fieldDefaultLookupNew[GetFieldDefinitionFromIndex(il2CppFieldDefaultValue.fieldIndex)] = il2CppFieldDefaultValue; } LibLogger.VerboseNewline($"OK ({(DateTime.Now - start).TotalMilliseconds} ms)"); diff --git a/LibCpp2IL/Metadata/Il2CppVariableWidthIndex.cs b/LibCpp2IL/Metadata/Il2CppVariableWidthIndex.cs index e4bb306b..ab9b3d7d 100644 --- a/LibCpp2IL/Metadata/Il2CppVariableWidthIndex.cs +++ b/LibCpp2IL/Metadata/Il2CppVariableWidthIndex.cs @@ -71,7 +71,10 @@ public static Il2CppVariableWidthIndex Read(ClassReadingBinaryReader reader) return Null; return new(val2); case 4: - return new(reader.ReadInt32()); + var val3 = reader.ReadInt32(); + if (val3 == int.MaxValue) + return Null; + return new(val3); default: throw new Exception($"Invalid width {widthForThisTypeOnCurrentApplication} for Il2CppVariableWidthIndex of type {typeof(T)}."); }