@@ -17,7 +17,7 @@ internal ref struct ReverseStringBuilder
17
17
private SequenceSegment ? _fallbackSequenceSegment ;
18
18
19
19
// For testing.
20
- internal int SequenceSegmentCount => _fallbackSequenceSegment ? . Count ( ) ?? 0 ;
20
+ internal readonly int SequenceSegmentCount => _fallbackSequenceSegment ? . Count ( ) ?? 0 ;
21
21
22
22
public ReverseStringBuilder ( int conservativeEstimatedStringLength )
23
23
{
@@ -33,7 +33,7 @@ public ReverseStringBuilder(Span<char> initialBuffer)
33
33
_nextEndIndex = _currentBuffer . Length ;
34
34
}
35
35
36
- public bool Empty => _nextEndIndex == _currentBuffer . Length ;
36
+ public readonly bool Empty => _nextEndIndex == _currentBuffer . Length ;
37
37
38
38
public void InsertFront ( scoped ReadOnlySpan < char > span )
39
39
{
@@ -60,13 +60,13 @@ public void InsertFront(scoped ReadOnlySpan<char> span)
60
60
var newBuffer = s_arrayPool . Rent ( sizeToRent ) ;
61
61
_fallbackSequenceSegment = new ( newBuffer ) ;
62
62
63
- _nextEndIndex = newBuffer . Length - _currentBuffer . Length ;
64
- _currentBuffer . CopyTo ( newBuffer . AsSpan ( ) [ _nextEndIndex ..] ) ;
65
- _currentBuffer = newBuffer ;
63
+ var newEndIndex = newBuffer . Length - _currentBuffer . Length + _nextEndIndex ;
64
+ _currentBuffer [ _nextEndIndex ..] . CopyTo ( newBuffer . AsSpan ( newEndIndex ) ) ;
65
+ newEndIndex -= span . Length ;
66
+ span . CopyTo ( newBuffer . AsSpan ( newEndIndex ) ) ;
66
67
67
- startIndex = _nextEndIndex - span . Length ;
68
- span . CopyTo ( _currentBuffer [ startIndex ..] ) ;
69
- _nextEndIndex = startIndex ;
68
+ _currentBuffer = newBuffer ;
69
+ _nextEndIndex = newEndIndex ;
70
70
}
71
71
else
72
72
{
0 commit comments