remove more nullability

This commit is contained in:
Adam Hathcock
2026-02-09 13:03:59 +00:00
parent 6bfe4071aa
commit 8f64d351ac
11 changed files with 90 additions and 53 deletions

View File

@@ -24,8 +24,6 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#nullable disable
using System;
using System.IO;
using System.Threading;
@@ -78,11 +76,12 @@ public sealed partial class ADCStream
var toCopy = count;
var copied = 0;
while (_outPosition + toCopy >= _outBuffer.Length)
var outBuf = _outBuffer.NotNull();
while (_outPosition + toCopy >= outBuf.Length)
{
cancellationToken.ThrowIfCancellationRequested();
var piece = _outBuffer.Length - _outPosition;
Array.Copy(_outBuffer, _outPosition, buffer, inPosition, piece);
var piece = outBuf.Length - _outPosition;
Array.Copy(outBuf, _outPosition, buffer, inPosition, piece);
inPosition += piece;
copied += piece;
_position += piece;
@@ -97,9 +96,10 @@ public sealed partial class ADCStream
{
return copied;
}
outBuf = _outBuffer;
}
Array.Copy(_outBuffer, _outPosition, buffer, inPosition, toCopy);
Array.Copy(outBuf, _outPosition, buffer, inPosition, toCopy);
_outPosition += toCopy;
_position += toCopy;
copied += toCopy;

View File

@@ -24,7 +24,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

View File

@@ -22,7 +22,8 @@ public partial class Decoder : ICoder, ISetDecoderProperties
== 0
)
{
return await _lowCoder[posState].NotNull()
return await _lowCoder[posState]
.NotNull()
.DecodeAsync(rangeDecoder, cancellationToken)
.ConfigureAwait(false);
}
@@ -32,7 +33,8 @@ public partial class Decoder : ICoder, ISetDecoderProperties
== 0
)
{
symbol += await _midCoder[posState].NotNull()
symbol += await _midCoder[posState]
.NotNull()
.DecodeAsync(rangeDecoder, cancellationToken)
.ConfigureAwait(false);
}
@@ -106,7 +108,8 @@ public partial class Decoder : ICoder, ISetDecoderProperties
byte prevByte,
CancellationToken cancellationToken = default
) =>
await _coders.NotNull()[GetState(pos, prevByte)]
await _coders
.NotNull()[GetState(pos, prevByte)]
.DecodeNormalAsync(rangeDecoder, cancellationToken)
.ConfigureAwait(false);
@@ -117,7 +120,8 @@ public partial class Decoder : ICoder, ISetDecoderProperties
byte matchByte,
CancellationToken cancellationToken = default
) =>
await _coders.NotNull()[GetState(pos, prevByte)]
await _coders
.NotNull()[GetState(pos, prevByte)]
.DecodeWithMatchByteAsync(rangeDecoder, matchByte, cancellationToken)
.ConfigureAwait(false);
}

View File

@@ -13,8 +13,12 @@ public partial class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Strea
{
private BitDecoder _choice = new();
private BitDecoder _choice2 = new();
private readonly BitTreeDecoder?[] _lowCoder = new BitTreeDecoder?[Base.K_NUM_POS_STATES_MAX];
private readonly BitTreeDecoder?[] _midCoder = new BitTreeDecoder?[Base.K_NUM_POS_STATES_MAX];
private readonly BitTreeDecoder?[] _lowCoder = new BitTreeDecoder?[
Base.K_NUM_POS_STATES_MAX
];
private readonly BitTreeDecoder?[] _midCoder = new BitTreeDecoder?[
Base.K_NUM_POS_STATES_MAX
];
private BitTreeDecoder _highCoder = new(Base.K_NUM_HIGH_LEN_BITS);
private uint _numPosStates;
@@ -151,7 +155,8 @@ public partial class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Strea
uint pos,
byte prevByte,
byte matchByte
) => _coders.NotNull()[GetState(pos, prevByte)].DecodeWithMatchByte(rangeDecoder, matchByte);
) =>
_coders.NotNull()[GetState(pos, prevByte)].DecodeWithMatchByte(rangeDecoder, matchByte);
}
private OutWindow? _outWindow;

View File

@@ -244,7 +244,8 @@ public class PpmdStream : Stream
var size = 0;
if (_properties.Version == PpmdVersion.I1)
{
size = await _model.NotNull()
size = await _model
.NotNull()
.DecodeBlockAsync(_stream, buffer, offset, count, cancellationToken)
.ConfigureAwait(false);
}
@@ -253,7 +254,12 @@ public class PpmdStream : Stream
int c;
while (
size < count
&& (c = await _modelH.NotNull().DecodeCharAsync(cancellationToken).ConfigureAwait(false)) >= 0
&& (
c = await _modelH
.NotNull()
.DecodeCharAsync(cancellationToken)
.ConfigureAwait(false)
) >= 0
)
{
buffer[offset++] = (byte)c;
@@ -266,7 +272,8 @@ public class PpmdStream : Stream
while (
size < count
&& (
c = await _modelH.NotNull()
c = await _modelH
.NotNull()
.DecodeCharAsync(_decoder.NotNull(), cancellationToken)
.ConfigureAwait(false)
) >= 0
@@ -301,7 +308,8 @@ public class PpmdStream : Stream
{
// Need to use a temporary buffer since DecodeBlockAsync works with byte[]
var tempBuffer = new byte[count];
size = await _model.NotNull()
size = await _model
.NotNull()
.DecodeBlockAsync(_stream, tempBuffer, 0, count, cancellationToken)
.ConfigureAwait(false);
tempBuffer.AsMemory(0, size).CopyTo(buffer);
@@ -311,7 +319,12 @@ public class PpmdStream : Stream
int c;
while (
size < count
&& (c = await _modelH.NotNull().DecodeCharAsync(cancellationToken).ConfigureAwait(false)) >= 0
&& (
c = await _modelH
.NotNull()
.DecodeCharAsync(cancellationToken)
.ConfigureAwait(false)
) >= 0
)
{
buffer.Span[offset++] = (byte)c;
@@ -324,7 +337,8 @@ public class PpmdStream : Stream
while (
size < count
&& (
c = await _modelH.NotNull()
c = await _modelH
.NotNull()
.DecodeCharAsync(_decoder.NotNull(), cancellationToken)
.ConfigureAwait(false)
) >= 0

View File

@@ -1,5 +1,3 @@
#nullable disable
using System;
using System.Buffers;
using System.IO;
@@ -47,7 +45,7 @@ internal partial class RarStream
if (tmpCount > 0)
{
var toCopy = tmpCount < count ? tmpCount : count;
Buffer.BlockCopy(tmpBuffer, tmpOffset, buffer, offset, toCopy);
Buffer.BlockCopy(tmpBuffer.NotNull(), tmpOffset, buffer, offset, toCopy);
tmpOffset += toCopy;
tmpCount -= toCopy;
offset += toCopy;

View File

@@ -128,5 +128,9 @@ public sealed partial class XZStream : XZReadOnlyStream
}
private void NextBlock() =>
_currentBlock = new XZBlock(BaseStream, Header.NotNull().BlockCheckType, Header.NotNull().BlockCheckSize);
_currentBlock = new XZBlock(
BaseStream,
Header.NotNull().BlockCheckType,
Header.NotNull().BlockCheckSize
);
}

View File

@@ -1,5 +1,3 @@
#nullable disable
using System;
using System.Collections;
using System.Collections.Generic;
@@ -15,7 +13,7 @@ namespace SharpCompress.Readers.Ace;
internal class MultiVolumeAceReader : AceReader
{
private readonly IEnumerator<Stream> streams;
private Stream tempStream;
private Stream? tempStream;
internal MultiVolumeAceReader(IEnumerable<Stream> streams, ReaderOptions options)
: base(options) => this.streams = streams.GetEnumerator();
@@ -54,13 +52,13 @@ internal class MultiVolumeAceReader : AceReader
{
private readonly MultiVolumeAceReader reader;
private readonly IEnumerator<Stream> nextReadableStreams;
private Stream tempStream;
private Stream? tempStream;
private bool isFirst = true;
internal MultiVolumeStreamEnumerator(
MultiVolumeAceReader r,
IEnumerator<Stream> nextReadableStreams,
Stream tempStream
Stream? tempStream
)
{
reader = r;
@@ -72,7 +70,12 @@ internal class MultiVolumeAceReader : AceReader
IEnumerator IEnumerable.GetEnumerator() => this;
public FilePart Current { get; private set; }
private FilePart? _current;
public FilePart Current
{
get => _current.NotNull();
private set => _current = value;
}
public void Dispose() { }
@@ -82,7 +85,7 @@ internal class MultiVolumeAceReader : AceReader
{
if (isFirst)
{
Current = reader.Entry.Parts.First();
_current = reader.Entry.Parts.First();
isFirst = false; //first stream already to go
return true;
}
@@ -93,7 +96,7 @@ internal class MultiVolumeAceReader : AceReader
}
if (tempStream != null)
{
reader.LoadStreamForReading(tempStream);
reader.LoadStreamForReading(tempStream.NotNull());
tempStream = null;
}
else if (!nextReadableStreams.MoveNext())
@@ -107,7 +110,7 @@ internal class MultiVolumeAceReader : AceReader
reader.LoadStreamForReading(nextReadableStreams.Current);
}
Current = reader.Entry.Parts.First();
_current = reader.Entry.Parts.First();
return true;
}

View File

@@ -1,5 +1,3 @@
#nullable disable
using System;
using System.Collections;
using System.Collections.Generic;
@@ -16,7 +14,7 @@ namespace SharpCompress.Readers.Arj;
internal class MultiVolumeArjReader : ArjReader
{
private readonly IEnumerator<Stream> streams;
private Stream tempStream;
private Stream? tempStream;
internal MultiVolumeArjReader(IEnumerable<Stream> streams, ReaderOptions options)
: base(options) => this.streams = streams.GetEnumerator();
@@ -55,13 +53,13 @@ internal class MultiVolumeArjReader : ArjReader
{
private readonly MultiVolumeArjReader reader;
private readonly IEnumerator<Stream> nextReadableStreams;
private Stream tempStream;
private Stream? tempStream;
private bool isFirst = true;
internal MultiVolumeStreamEnumerator(
MultiVolumeArjReader r,
IEnumerator<Stream> nextReadableStreams,
Stream tempStream
Stream? tempStream
)
{
reader = r;
@@ -73,7 +71,12 @@ internal class MultiVolumeArjReader : ArjReader
IEnumerator IEnumerable.GetEnumerator() => this;
public FilePart Current { get; private set; }
private FilePart? _current;
public FilePart Current
{
get => _current.NotNull();
private set => _current = value;
}
public void Dispose() { }
@@ -94,7 +97,7 @@ internal class MultiVolumeArjReader : ArjReader
}
if (tempStream != null)
{
reader.LoadStreamForReading(tempStream);
reader.LoadStreamForReading(tempStream.NotNull());
tempStream = null;
}
else if (!nextReadableStreams.MoveNext())

View File

@@ -1,5 +1,3 @@
#nullable disable
using System.Collections;
using System.Collections.Generic;
using System.IO;
@@ -26,13 +24,13 @@ internal partial class MultiVolumeRarReader : RarReader
{
private readonly MultiVolumeRarReader reader;
private readonly IEnumerator<Stream> nextReadableStreams;
private Stream tempStream;
private Stream? tempStream;
private bool isFirst = true;
internal MultiVolumeStreamAsyncEnumerator(
MultiVolumeRarReader r,
IEnumerator<Stream> nextReadableStreams,
Stream tempStream
Stream? tempStream
)
{
reader = r;
@@ -40,7 +38,12 @@ internal partial class MultiVolumeRarReader : RarReader
this.tempStream = tempStream;
}
public FilePart Current { get; private set; }
private FilePart? _current;
public FilePart Current
{
get => _current.NotNull();
private set => _current = value;
}
public async ValueTask<bool> MoveNextAsync()
{
@@ -57,7 +60,7 @@ internal partial class MultiVolumeRarReader : RarReader
}
if (tempStream != null)
{
await reader.LoadStreamForReadingAsync(tempStream);
await reader.LoadStreamForReadingAsync(tempStream.NotNull());
tempStream = null;
}
else if (!nextReadableStreams.MoveNext())

View File

@@ -1,5 +1,3 @@
#nullable disable
using System.Collections;
using System.Collections.Generic;
using System.IO;
@@ -14,7 +12,7 @@ namespace SharpCompress.Readers.Rar;
internal partial class MultiVolumeRarReader : RarReader
{
private readonly IEnumerator<Stream> streams;
private Stream tempStream;
private Stream? tempStream;
internal MultiVolumeRarReader(IEnumerable<Stream> streams, ReaderOptions options)
: base(options) => this.streams = streams.GetEnumerator();
@@ -55,13 +53,13 @@ internal partial class MultiVolumeRarReader : RarReader
{
private readonly MultiVolumeRarReader reader;
private readonly IEnumerator<Stream> nextReadableStreams;
private Stream tempStream;
private Stream? tempStream;
private bool isFirst = true;
internal MultiVolumeStreamEnumerator(
MultiVolumeRarReader r,
IEnumerator<Stream> nextReadableStreams,
Stream tempStream
Stream? tempStream
)
{
reader = r;
@@ -73,7 +71,12 @@ internal partial class MultiVolumeRarReader : RarReader
IEnumerator IEnumerable.GetEnumerator() => this;
public FilePart Current { get; private set; }
private FilePart? _current;
public FilePart Current
{
get => _current.NotNull();
private set => _current = value;
}
public void Dispose() { }
@@ -94,7 +97,7 @@ internal partial class MultiVolumeRarReader : RarReader
}
if (tempStream != null)
{
reader.LoadStreamForReading(tempStream);
reader.LoadStreamForReading(tempStream.NotNull());
tempStream = null;
}
else if (!nextReadableStreams.MoveNext())