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);
}