Skip to content

Commit d3c3359

Browse files
committed
Add ReadOnlySpan overload (TrimNullTerminators())
1 parent bd7ba72 commit d3c3359

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

Source/EndianBinaryPrimitives.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ public static void TrimNullTerminators(ref Span<char> chars)
3939
chars = chars.Slice(0, i);
4040
}
4141
}
42+
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
43+
public static void TrimNullTerminators(ref ReadOnlySpan<char> chars)
44+
{
45+
int i = chars.IndexOf('\0');
46+
if (i != -1)
47+
{
48+
chars = chars.Slice(0, i);
49+
}
50+
}
4251

4352
#region Read
4453

Testing/BasicTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,4 +201,13 @@ public void SpanIsProperlyTrimmed()
201201

202202
Assert.True(test.SequenceEqual("Kermalis"));
203203
}
204+
205+
[Fact]
206+
public void ReadOnlySpanIsProperlyTrimmed()
207+
{
208+
ReadOnlySpan<char> test = "Kermalis\0\0";
209+
EndianBinaryPrimitives.TrimNullTerminators(ref test);
210+
211+
Assert.True(test.SequenceEqual("Kermalis"));
212+
}
204213
}

0 commit comments

Comments
 (0)