From 921a99fc32e0f6aefdc3a77b04f90189a8f04682 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 10 Apr 2020 11:54:58 +0200 Subject: [PATCH 1/4] Replace static readonly byte[] fields with static ReadOnlySpan properties --- src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs | 4 ++-- src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs | 6 +++--- src/SharpCompress/Compressors/PPMd/I1/Model.cs | 2 +- src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs | 2 +- src/SharpCompress/Crypto/RijndaelEngine.cs | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs index 6e5c1dc2..df987b4c 100644 --- a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs +++ b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs @@ -129,12 +129,12 @@ namespace SharpCompress.Archives.SevenZip } } - private static readonly byte[] SIGNATURE = {(byte)'7', (byte)'z', 0xBC, 0xAF, 0x27, 0x1C}; + private static ReadOnlySpan SIGNATURE => new byte[] {(byte)'7', (byte)'z', 0xBC, 0xAF, 0x27, 0x1C}; private static bool SignatureMatch(Stream stream) { BinaryReader reader = new BinaryReader(stream); - byte[] signatureBytes = reader.ReadBytes(6); + ReadOnlySpan signatureBytes = reader.ReadBytes(6); return signatureBytes.SequenceEqual(SIGNATURE); } diff --git a/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs b/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs index a0f1f2c8..d7101ab1 100644 --- a/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs +++ b/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs @@ -37,7 +37,7 @@ namespace SharpCompress.Compressors.Deflate64 // const tables used in decoding: // Extra bits for length code 257 - 285. - private static readonly byte[] S_EXTRA_LENGTH_BITS = + private static ReadOnlySpan S_EXTRA_LENGTH_BITS => new byte[] { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,16 }; // The base length for length code 257 - 285. @@ -51,9 +51,9 @@ namespace SharpCompress.Compressors.Deflate64 { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,32769,49153 }; // code lengths for code length alphabet is stored in following order - private static readonly byte[] S_CODE_ORDER = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; + private static ReadOnlySpan S_CODE_ORDER => new byte[] { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; - private static readonly byte[] S_STATIC_DISTANCE_TREE_TABLE = + private static ReadOnlySpan S_STATIC_DISTANCE_TREE_TABLE => new byte[] { 0x00,0x10,0x08,0x18,0x04,0x14,0x0c,0x1c,0x02,0x12,0x0a,0x1a, 0x06,0x16,0x0e,0x1e,0x01,0x11,0x09,0x19,0x05,0x15,0x0d,0x1d, diff --git a/src/SharpCompress/Compressors/PPMd/I1/Model.cs b/src/SharpCompress/Compressors/PPMd/I1/Model.cs index 11d065c1..db21de31 100644 --- a/src/SharpCompress/Compressors/PPMd/I1/Model.cs +++ b/src/SharpCompress/Compressors/PPMd/I1/Model.cs @@ -58,7 +58,7 @@ namespace SharpCompress.Compressors.PPMd.I1 0x6051 }; - private static readonly byte[] EXPONENTIAL_ESCAPES = {25, 14, 9, 7, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2}; + private static ReadOnlySpan EXPONENTIAL_ESCAPES => new byte[] {25, 14, 9, 7, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2}; #region Public Methods diff --git a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs index 31abac00..94440890 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs @@ -38,7 +38,7 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 56, 64, 80, 96, 112, 128, 160, 192, 224 }; - private static readonly byte[] LBits = + private static ReadOnlySpan LBits => new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5 diff --git a/src/SharpCompress/Crypto/RijndaelEngine.cs b/src/SharpCompress/Crypto/RijndaelEngine.cs index 06e2bbdd..654d4556 100644 --- a/src/SharpCompress/Crypto/RijndaelEngine.cs +++ b/src/SharpCompress/Crypto/RijndaelEngine.cs @@ -9,7 +9,7 @@ namespace SharpCompress.Crypto private static readonly int MAXKC = (256 / 4); - private static readonly byte[] Logtable = + private static ReadOnlySpan Logtable => new byte[] { 0, 0, 25, 1, 50, 2, 26, 198, 75, 199, 27, 104, 51, 238, 223, 3, @@ -45,7 +45,7 @@ namespace SharpCompress.Crypto 13, 99, 140, 128, 192, 247, 112, 7 }; - private static readonly byte[] Alogtable = + private static ReadOnlySpan Alogtable => new byte[] { 0, 3, 5, 15, 17, 51, 85, 255, 26, 46, 114, 150, 161, 248, 19, 53, 95, 225, 56, 72, 216, 115, 149, 164, 247, 2, 6, 10, 30, 34, 102, 170, @@ -121,7 +121,7 @@ namespace SharpCompress.Crypto 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125 }; - private static readonly byte[] rcon = + private static ReadOnlySpan rcon => new byte[] { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 From ccb9593de21bd7e0d2e69ba53ca8ddd640e548a8 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 10 Apr 2020 12:03:32 +0200 Subject: [PATCH 2/4] Replace Span.Fill(0) with Span.Clear() --- src/SharpCompress/Common/Tar/Headers/TarHeader.cs | 2 +- src/SharpCompress/Compressors/PPMd/H/ModelPPM.cs | 4 ++-- src/SharpCompress/Compressors/PPMd/H/SubAllocator.cs | 2 +- src/SharpCompress/Compressors/Rar/UnpackV1/Unpack.cs | 8 ++++---- src/SharpCompress/Compressors/Rar/UnpackV1/Unpack15.cs | 8 ++++---- src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs | 4 ++-- .../Compressors/Rar/UnpackV1/UnpackUtility.cs | 2 +- .../Compressors/Rar/UnpackV2017/Unpack.unpack15_cpp.cs | 8 ++++---- .../Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs | 4 ++-- .../Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs | 4 ++-- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/SharpCompress/Common/Tar/Headers/TarHeader.cs b/src/SharpCompress/Common/Tar/Headers/TarHeader.cs index c961fe52..08f567ed 100644 --- a/src/SharpCompress/Common/Tar/Headers/TarHeader.cs +++ b/src/SharpCompress/Common/Tar/Headers/TarHeader.cs @@ -196,7 +196,7 @@ namespace SharpCompress.Common.Tar.Headers { name.CopyTo(buffer); int i = Math.Min(length, name.Length); - buffer.Slice(i, length - i).Fill(0); + buffer.Slice(i, length - i).Clear(); } private static void WriteStringBytes(string name, byte[] buffer, int offset, int length) diff --git a/src/SharpCompress/Compressors/PPMd/H/ModelPPM.cs b/src/SharpCompress/Compressors/PPMd/H/ModelPPM.cs index 001c6950..84250275 100644 --- a/src/SharpCompress/Compressors/PPMd/H/ModelPPM.cs +++ b/src/SharpCompress/Compressors/PPMd/H/ModelPPM.cs @@ -137,7 +137,7 @@ namespace SharpCompress.Compressors.PPMd.H private void RestartModelRare() { - new Span(_charMask).Fill(0); + new Span(_charMask).Clear(); SubAlloc.InitSubAllocator(); _initRl = -(_maxOrder < 12 ? _maxOrder : 12) - 1; int addr = SubAlloc.AllocContext(); @@ -228,7 +228,7 @@ namespace SharpCompress.Compressors.PPMd.H private void ClearMask() { _escCount = 1; - new Span(_charMask).Fill(0); + new Span(_charMask).Clear(); } internal bool DecodeInit(IRarUnpack unpackRead, int escChar) diff --git a/src/SharpCompress/Compressors/PPMd/H/SubAllocator.cs b/src/SharpCompress/Compressors/PPMd/H/SubAllocator.cs index 38a1ca2c..5c4ca30d 100644 --- a/src/SharpCompress/Compressors/PPMd/H/SubAllocator.cs +++ b/src/SharpCompress/Compressors/PPMd/H/SubAllocator.cs @@ -360,7 +360,7 @@ namespace SharpCompress.Compressors.PPMd.H public virtual void InitSubAllocator() { int i, k; - new Span(_heap, _freeListPos, SizeOfFreeList()).Fill(0); + new Span(_heap, _freeListPos, SizeOfFreeList()).Clear(); _pText = _heapStart; diff --git a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack.cs b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack.cs index ff522c4a..4e1d74c7 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack.cs @@ -729,13 +729,13 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 if (!solid) { tablesRead = false; - new Span(oldDist).Fill(0); // memset(oldDist,0,sizeof(OldDist)); + new Span(oldDist).Clear(); // memset(oldDist,0,sizeof(OldDist)); oldDistPtr = 0; lastDist = 0; lastLength = 0; - new Span(unpOldTable).Fill(0); // memset(UnpOldTable,0,sizeof(UnpOldTable)); + new Span(unpOldTable).Clear(); // memset(UnpOldTable,0,sizeof(UnpOldTable)); unpPtr = 0; wrPtr = 0; @@ -837,7 +837,7 @@ WriteBorder=Math.Min(MaxWinSize,UNPACK_MAX_WRITE)&MaxWinMask; if ((bitField & 0x4000) == 0) { - new Span(unpOldTable).Fill(0); // memset(UnpOldTable,0,sizeof(UnpOldTable)); + new Span(unpOldTable).Clear(); // memset(UnpOldTable,0,sizeof(UnpOldTable)); } AddBits(2); @@ -1109,7 +1109,7 @@ WriteBorder=Math.Min(MaxWinSize,UNPACK_MAX_WRITE)&MaxWinMask; oldFilterLengths[FiltPos] = StackFilter.BlockLength; // memset(StackFilter->Prg.InitR,0,sizeof(StackFilter->Prg.InitR)); - new Span(StackFilter.Program.InitR).Fill(0); + new Span(StackFilter.Program.InitR).Clear(); StackFilter.Program.InitR[3] = RarVM.VM_GLOBALMEMADDR; // StackFilter->Prg.InitR[3]=VM_GLOBALMEMADDR; StackFilter.Program.InitR[4] = StackFilter.BlockLength; diff --git a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack15.cs b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack15.cs index 52144c20..435a6fca 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack15.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack15.cs @@ -652,9 +652,9 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 ChSetC[I] = ((~I + 1) & 0xff) << 8; } - new Span(NToPl).Fill(0); // memset(NToPl,0,sizeof(NToPl)); - new Span(NToPlB).Fill(0); // memset(NToPlB,0,sizeof(NToPlB)); - new Span(NToPlC).Fill(0); // memset(NToPlC,0,sizeof(NToPlC)); + new Span(NToPl).Clear(); // memset(NToPl,0,sizeof(NToPl)); + new Span(NToPlB).Clear(); // memset(NToPlB,0,sizeof(NToPlB)); + new Span(NToPlC).Clear(); // memset(NToPlC,0,sizeof(NToPlC)); corrHuff(ChSetB, NToPlB); } @@ -670,7 +670,7 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 // & ~0xff) | I; } } - new Span(NumToPlace).Fill(0); // memset(NumToPlace,0,sizeof(NToPl)); + new Span(NumToPlace).Clear(); // memset(NumToPlace,0,sizeof(NToPl)); for (I = 6; I >= 0; I--) { NumToPlace[I] = (7 - I) * 32; diff --git a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs index 94440890..ad022c6b 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV1/Unpack20.cs @@ -263,7 +263,7 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 if (0 == (BitField & 0x4000)) { // memset(UnpOldTable20,0,sizeof(UnpOldTable20)); - new Span(UnpOldTable20).Fill(0); + new Span(UnpOldTable20).Clear(); } AddBits(2); @@ -371,7 +371,7 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 AudV[3] = new AudioVariables(); // memset(UnpOldTable20,0,sizeof(UnpOldTable20)); - new Span(UnpOldTable20).Fill(0); + new Span(UnpOldTable20).Clear(); } } diff --git a/src/SharpCompress/Compressors/Rar/UnpackV1/UnpackUtility.cs b/src/SharpCompress/Compressors/Rar/UnpackV1/UnpackUtility.cs index 11fa777d..9559e9b4 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV1/UnpackUtility.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV1/UnpackUtility.cs @@ -187,7 +187,7 @@ namespace SharpCompress.Compressors.Rar.UnpackV1 int i; long M, N; - new Span(dec.DecodeNum).Fill(0); // memset(Dec->DecodeNum,0,Size*sizeof(*Dec->DecodeNum)); + new Span(dec.DecodeNum).Clear(); // memset(Dec->DecodeNum,0,Size*sizeof(*Dec->DecodeNum)); for (i = 0; i < size; i++) { diff --git a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack15_cpp.cs b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack15_cpp.cs index 44f2f5ac..fbcb55f1 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack15_cpp.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack15_cpp.cs @@ -546,9 +546,9 @@ internal static class Unpack15Local { ChSetA[I]=(ushort)I; ChSetC[I]=(ushort)(((~I+1) & 0xff)<<8); } - new Span(NToPl).Fill(0); - new Span(NToPlB).Fill(0); - new Span(NToPlC).Fill(0); + new Span(NToPl).Clear(); + new Span(NToPlB).Clear(); + new Span(NToPlC).Clear(); CorrHuff(ChSetB,NToPlB); } @@ -558,7 +558,7 @@ internal static class Unpack15Local { for (I=7;I>=0;I--) for (J=0;J<32;J++) CharSet[J]=(ushort)((CharSet[J] & ~0xff) | I); - new Span(NumToPlace, 0, NToPl.Length).Fill(0); + new Span(NumToPlace, 0, NToPl.Length).Clear(); for (I=6;I>=0;I--) NumToPlace[I]=(byte)((7-I)*32); } diff --git a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs index 857c03b4..6d789961 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs @@ -231,7 +231,7 @@ internal static class Unpack20Local { if ((BitField & 0x4000) != 0) { - new Span(UnpOldTable20).Fill(0); + new Span(UnpOldTable20).Clear(); } Inp.addbits(2); @@ -363,7 +363,7 @@ internal static class Unpack20Local { //memset(AudV,0,sizeof(AudV)); AudV = new AudioVariables[4]; - new Span(UnpOldTable20).Fill(0); + new Span(UnpOldTable20).Clear(); //memset(MD,0,sizeof(MD)); MD = new DecodeTable[4]; } diff --git a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs index 5d5121ea..cc4a5f35 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs @@ -220,7 +220,7 @@ public Unpack(/* ComprDataIO *DataIO */) { if (!Solid) { - new Span(OldDist).Fill(0); + new Span(OldDist).Clear(); OldDistPtr=0; LastDist=LastLength=0; // memset(Window,0,MaxWinSize); @@ -270,7 +270,7 @@ public Unpack(/* ComprDataIO *DataIO */) // Set the entire DecodeNum to zero. //memset(Dec->DecodeNum,0,Size*sizeof(*Dec->DecodeNum)); - new Span(Dec.DecodeNum).Fill(0); + new Span(Dec.DecodeNum).Clear(); // Initialize not really used entry for zero length code. Dec.DecodePos[0]=0; From 2c64380019f6ce19e07f1010f0a3ed52e0f8cf2b Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 10 Apr 2020 12:06:38 +0200 Subject: [PATCH 3/4] Use 3 argument Array.Copy when possible --- src/SharpCompress/Compressors/ADC/ADCBase.cs | 2 +- src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs | 2 +- .../Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs | 2 +- .../Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SharpCompress/Compressors/ADC/ADCBase.cs b/src/SharpCompress/Compressors/ADC/ADCBase.cs index 8a0cf4a1..80986029 100644 --- a/src/SharpCompress/Compressors/ADC/ADCBase.cs +++ b/src/SharpCompress/Compressors/ADC/ADCBase.cs @@ -211,7 +211,7 @@ namespace SharpCompress.Compressors.ADC } output = new byte[outPosition]; - Array.Copy(buffer, 0, output, 0, outPosition); + Array.Copy(buffer, output, outPosition); return position - start; } } diff --git a/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs b/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs index d7101ab1..ebb1c86e 100644 --- a/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs +++ b/src/SharpCompress/Compressors/Deflate64/InflaterManaged.cs @@ -720,7 +720,7 @@ namespace SharpCompress.Compressors.Deflate64 byte[] distanceTreeCodeLength = new byte[HuffmanTree.MAX_DIST_TREE_ELEMENTS]; // Create literal and distance tables - Array.Copy(_codeList, 0, literalTreeCodeLength, 0, _literalLengthCodeCount); + Array.Copy(_codeList, literalTreeCodeLength, _literalLengthCodeCount); Array.Copy(_codeList, _literalLengthCodeCount, distanceTreeCodeLength, 0, _distanceCodeCount); // Make sure there is an end-of-block code, otherwise how could we ever end? diff --git a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs index 6d789961..05972f18 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack20_cpp.cs @@ -328,7 +328,7 @@ internal static class Unpack20Local { MakeDecodeTables(Table,(int)(NC20+DC20),BlockTables.RD,RC20); } //x memcpy(UnpOldTable20,Table,sizeof(UnpOldTable20)); - Array.Copy(Table,0,UnpOldTable20,0,UnpOldTable20.Length); + Array.Copy(Table,UnpOldTable20,UnpOldTable20.Length); return true; } diff --git a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs index cc4a5f35..549ca5d9 100644 --- a/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs +++ b/src/SharpCompress/Compressors/Rar/UnpackV2017/Unpack.unpack_cpp.cs @@ -304,7 +304,7 @@ public Unpack(/* ComprDataIO *DataIO */) // so we cannot use the original DecodePos. uint[] CopyDecodePos = new uint[Dec.DecodePos.Length]; //memcpy(CopyDecodePos,Dec->DecodePos,sizeof(CopyDecodePos)); - Array.Copy(Dec.DecodePos, 0, CopyDecodePos, 0, CopyDecodePos.Length); + Array.Copy(Dec.DecodePos, CopyDecodePos, CopyDecodePos.Length); // For every bit length in the bit length table and so for every item // of alphabet. From 4cad40f637964f011813803b63d199f7306cdf68 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 10 Apr 2020 12:33:40 +0200 Subject: [PATCH 4/4] Minor string optimizations --- src/SharpCompress/Compressors/Deflate/GZipStream.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/SharpCompress/Compressors/Deflate/GZipStream.cs b/src/SharpCompress/Compressors/Deflate/GZipStream.cs index 7de01140..335ec8eb 100644 --- a/src/SharpCompress/Compressors/Deflate/GZipStream.cs +++ b/src/SharpCompress/Compressors/Deflate/GZipStream.cs @@ -372,17 +372,16 @@ namespace SharpCompress.Compressors.Deflate { return; } - if (_fileName.IndexOf("/") != -1) + if (_fileName.Contains("/")) { - _fileName = _fileName.Replace("/", "\\"); + _fileName = _fileName.Replace('/', '\\'); } if (_fileName.EndsWith("\\")) { throw new InvalidOperationException("Illegal filename"); } - var index = _fileName.IndexOf("\\"); - if (index != -1) + if (_fileName.Contains("\\")) { // trim any leading path int length = _fileName.Length;