diff --git a/SabreTools.Serialization/Wrappers/LinearExecutable.cs b/SabreTools.Serialization/Wrappers/LinearExecutable.cs index c6931da3..71b5aeef 100644 --- a/SabreTools.Serialization/Wrappers/LinearExecutable.cs +++ b/SabreTools.Serialization/Wrappers/LinearExecutable.cs @@ -166,7 +166,7 @@ namespace SabreTools.Serialization.Wrappers return -1; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return -1; @@ -268,7 +268,7 @@ namespace SabreTools.Serialization.Wrappers return -1; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return -1; @@ -301,7 +301,7 @@ namespace SabreTools.Serialization.Wrappers /// How many bytes to read, -1 means read until end /// Byte array representing the range, null on error [Obsolete] - public byte[]? ReadArbitraryRange(int rangeStart = -1, int length = -1) + public byte[]? ReadArbitraryRange(int rangeStart = -1, long length = -1) { // If we have an unset range start, read from the start of the source if (rangeStart == -1) @@ -313,16 +313,16 @@ namespace SabreTools.Serialization.Wrappers switch (_dataSource) { case DataSource.ByteArray: - length = _byteArrayData!.Length - _byteArrayOffset; + length = _byteArrayData!.Length - _initialPosition; break; case DataSource.Stream: - length = (int)_streamData!.Length; + length = _streamData!.Length - _initialPosition; break; } } - return ReadFromDataSource(rangeStart, length); + return ReadFromDataSource(rangeStart, (int)length); } #endregion diff --git a/SabreTools.Serialization/Wrappers/NewExecutable.cs b/SabreTools.Serialization/Wrappers/NewExecutable.cs index 54bc8226..a38cb85b 100644 --- a/SabreTools.Serialization/Wrappers/NewExecutable.cs +++ b/SabreTools.Serialization/Wrappers/NewExecutable.cs @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.Wrappers return _overlayData; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return null; @@ -169,8 +169,8 @@ namespace SabreTools.Serialization.Wrappers } // Otherwise, cache and return the data - int overlayLength = endOfFile - endOfSectionData; - _overlayData = ReadFromDataSource(endOfSectionData, overlayLength); + long overlayLength = endOfFile - endOfSectionData; + _overlayData = ReadFromDataSource(endOfSectionData, (int)overlayLength); return _overlayData; } } @@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Wrappers return _overlayStrings; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return null; @@ -239,10 +239,10 @@ namespace SabreTools.Serialization.Wrappers // TODO: Revisit the 16 MiB limit // Cap the check for overlay strings to 16 MiB (arbitrary) - int overlayLength = Math.Min(endOfFile - endOfSectionData, 16 * 1024 * 1024); + long overlayLength = Math.Min(endOfFile - endOfSectionData, 16 * 1024 * 1024); // Otherwise, cache and return the strings - _overlayStrings = ReadStringsFromDataSource(endOfSectionData, overlayLength, charLimit: 3); + _overlayStrings = ReadStringsFromDataSource(endOfSectionData, (int)overlayLength, charLimit: 3); return _overlayStrings; } } @@ -396,7 +396,7 @@ namespace SabreTools.Serialization.Wrappers return null; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return null; @@ -474,7 +474,7 @@ namespace SabreTools.Serialization.Wrappers public int GetResourceOffset(int id) { // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return -1; @@ -570,7 +570,7 @@ namespace SabreTools.Serialization.Wrappers return -1; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return -1; @@ -599,7 +599,7 @@ namespace SabreTools.Serialization.Wrappers /// How many bytes to read, -1 means read until end /// Byte array representing the range, null on error [Obsolete] - public byte[]? ReadArbitraryRange(int rangeStart = -1, int length = -1) + public byte[]? ReadArbitraryRange(int rangeStart = -1, long length = -1) { // If we have an unset range start, read from the start of the source if (rangeStart == -1) @@ -611,16 +611,16 @@ namespace SabreTools.Serialization.Wrappers switch (_dataSource) { case DataSource.ByteArray: - length = _byteArrayData!.Length - _byteArrayOffset; + length = _byteArrayData!.Length - _initialPosition; break; case DataSource.Stream: - length = (int)_streamData!.Length; + length = _streamData!.Length - _initialPosition; break; } } - return ReadFromDataSource(rangeStart, length); + return ReadFromDataSource(rangeStart, (int)length); } #endregion diff --git a/SabreTools.Serialization/Wrappers/PortableExecutable.cs b/SabreTools.Serialization/Wrappers/PortableExecutable.cs index 3bc400cc..078bc235 100644 --- a/SabreTools.Serialization/Wrappers/PortableExecutable.cs +++ b/SabreTools.Serialization/Wrappers/PortableExecutable.cs @@ -208,7 +208,7 @@ namespace SabreTools.Serialization.Wrappers return _overlayAddress.Value; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return -1; @@ -279,7 +279,7 @@ namespace SabreTools.Serialization.Wrappers return _overlayData; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return null; @@ -336,8 +336,8 @@ namespace SabreTools.Serialization.Wrappers } // Otherwise, cache and return the data - int overlayLength = endOfFile - endOfSectionData; - _overlayData = ReadFromDataSource(endOfSectionData, overlayLength); + long overlayLength = endOfFile - endOfSectionData; + _overlayData = ReadFromDataSource(endOfSectionData, (int)overlayLength); return _overlayData; } } @@ -357,7 +357,7 @@ namespace SabreTools.Serialization.Wrappers return _overlayStrings; // Get the end of the file, if possible - int endOfFile = GetEndOfFile(); + long endOfFile = GetEndOfFile(); if (endOfFile == -1) return null; @@ -415,10 +415,10 @@ namespace SabreTools.Serialization.Wrappers // TODO: Revisit the 16 MiB limit // Cap the check for overlay strings to 16 MiB (arbitrary) - int overlayLength = Math.Min(endOfFile - endOfSectionData, 16 * 1024 * 1024); + long overlayLength = Math.Min(endOfFile - endOfSectionData, 16 * 1024 * 1024); // Otherwise, cache and return the strings - _overlayStrings = ReadStringsFromDataSource(endOfSectionData, overlayLength, charLimit: 3); + _overlayStrings = ReadStringsFromDataSource(endOfSectionData, (int)overlayLength, charLimit: 3); return _overlayStrings; } } diff --git a/SabreTools.Serialization/Wrappers/Quantum.cs b/SabreTools.Serialization/Wrappers/Quantum.cs index 841f75d1..35d53758 100644 --- a/SabreTools.Serialization/Wrappers/Quantum.cs +++ b/SabreTools.Serialization/Wrappers/Quantum.cs @@ -135,8 +135,8 @@ namespace SabreTools.Serialization.Wrappers // Read the entire compressed data int compressedDataOffset = (int)CompressedDataOffset; - int compressedDataLength = GetEndOfFile() - compressedDataOffset; - var compressedData = ReadFromDataSource(compressedDataOffset, compressedDataLength); + long compressedDataLength = GetEndOfFile() - compressedDataOffset; + var compressedData = ReadFromDataSource(compressedDataOffset, (int)compressedDataLength); // Print a debug reminder if (includeDebug) Console.WriteLine("Quantum archive extraction is unsupported");