diff --git a/SharpCompress.sln.DotSettings b/SharpCompress.sln.DotSettings index 248b4c35..4ff50910 100644 --- a/SharpCompress.sln.DotSettings +++ b/SharpCompress.sln.DotSettings @@ -79,6 +79,10 @@ <Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /></Policy> + <Policy><Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Static readonly fields (not private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /></Policy> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> @@ -127,6 +131,7 @@ True True True + True <SessionState ContinuousTestingIsOn="False" ContinuousTestingMode="0" FrameworkVersion="{x:Null}" IsLocked="False" Name="All tests from Solution" PlatformMonoPreference="{x:Null}" PlatformType="{x:Null}" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Solution /> </SessionState> diff --git a/src/SharpCompress/Utility.cs b/src/SharpCompress/Utility.cs index 857ecc8c..5d8c1e27 100644 --- a/src/SharpCompress/Utility.cs +++ b/src/SharpCompress/Utility.cs @@ -288,14 +288,19 @@ public static long TransferTo(this Stream source, Stream destination) } } - public static long TransferTo(this Stream source, Stream destination, int size) + public static long TransferTo(this Stream source, Stream destination, long maxLength) { var array = GetTransferByteArray(); try { long total = 0; - var remaining = size; - while (ReadTransferBlock(source, array, remaining, out var count)) + var remaining = maxLength; + var maxReadSize = array.Length; + if (remaining < maxLength) + { + maxReadSize = (int)remaining; + } + while (ReadTransferBlock(source, array, maxReadSize, out var count)) { destination.Write(array, 0, count); total += count; diff --git a/src/SharpCompress/Writers/Tar/TarWriter.cs b/src/SharpCompress/Writers/Tar/TarWriter.cs index 177a4051..90242857 100644 --- a/src/SharpCompress/Writers/Tar/TarWriter.cs +++ b/src/SharpCompress/Writers/Tar/TarWriter.cs @@ -90,14 +90,7 @@ public void Write(string filename, Stream source, DateTime? modificationTime, lo header.Name = NormalizeFilename(filename); header.Size = realSize; header.Write(OutputStream); - - if (realSize >= int.MaxValue) - { - throw new NotSupportedException( - "TarWriter does not support writing files larger than 2GB." - ); - } - size = source.TransferTo(OutputStream, (int)realSize); + size = source.TransferTo(OutputStream, realSize); PadTo512(size.Value); }