diff --git a/BurnOutSharp/External/libgsf/Input/GsfInfileMSOle.cs b/BurnOutSharp/External/libgsf/Input/GsfInfileMSOle.cs index 36659ad6..80815eeb 100644 --- a/BurnOutSharp/External/libgsf/Input/GsfInfileMSOle.cs +++ b/BurnOutSharp/External/libgsf/Input/GsfInfileMSOle.cs @@ -508,7 +508,8 @@ namespace LibGSF.Input return null; // Avoid creating a circular reference - (Info.SmallBlockFile as GsfInfileMSOle)?.Info?.Unref(); + if (Info.SmallBlockFile is GsfInfileMSOle sbFile) + sbFile.Info.Unref(); if (Info.SmallBlockBat.Blocks != null) return null; @@ -616,7 +617,6 @@ namespace LibGSF.Input { Input = input, Info = Info.Ref(), - Stream = null, }; return dst; @@ -847,7 +847,7 @@ namespace LibGSF.Input return null; } - if (sb_file.Read((int)Math.Min(remaining, Info.Header.SB_SIZE), child.Stream, (int)(i << Info.Header.SB_SHIFT)) == null) + if (sb_file.Read(Math.Min(remaining, Info.Header.SB_SIZE), child.Stream, (int)(i << Info.Header.SB_SHIFT)) == null) { Console.Error.WriteLine($"Failure reading block {i} for '{dirent.Header.NAME_STRING}'"); err = new Exception("Failure reading block"); diff --git a/BurnOutSharp/External/libmsi/LibmsiDatabase.cs b/BurnOutSharp/External/libmsi/LibmsiDatabase.cs index 5a07bbf5..363a6427 100644 --- a/BurnOutSharp/External/libmsi/LibmsiDatabase.cs +++ b/BurnOutSharp/External/libmsi/LibmsiDatabase.cs @@ -836,7 +836,7 @@ namespace LibMSI } Infile = stg; - CacheInfileStructure(); // TODO: Investigate caching. Is it reading the right data? + CacheInfileStructure(); Strings = LoadStringTable(Infile, out int bytes_per_strref); if (Strings == null)