Skip to content

Commit 3077f6d

Browse files
committed
fix MemoryPackReader.PeekIsNull
1 parent 1ee7175 commit 3077f6d

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/MemoryPack.Core/MemoryPackReader.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,8 @@ public bool TryReadCollectionHeader(out int length)
297297
[MethodImpl(MethodImplOptions.AggressiveInlining)]
298298
public bool PeekIsNull()
299299
{
300-
return TryPeekObjectHeader(out _);
300+
var code = GetSpanReference(1);
301+
return code == MemoryPackCode.NullObject;
301302
}
302303

303304
[MethodImpl(MethodImplOptions.AggressiveInlining)]

src/MemoryPack.Unity/Assets/Plugins/MemoryPack/Runtime/MemoryPack.Core/MemoryPackReader.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ public bool TryReadCollectionHeader(out int length)
306306
[MethodImpl(MethodImplOptions.AggressiveInlining)]
307307
public bool PeekIsNull()
308308
{
309-
return TryPeekObjectHeader(out _);
309+
var code = GetSpanReference(1);
310+
return code == MemoryPackCode.NullObject;
310311
}
311312

312313
[MethodImpl(MethodImplOptions.AggressiveInlining)]

tests/MemoryPack.Tests/ReaderTest.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,4 +167,15 @@ public void ValidateInvalidLengthTest()
167167
catch (MemoryPackSerializationException) { }
168168
}
169169

170+
[Fact]
171+
public void PeekIsNull()
172+
{
173+
var bin = MemoryPackSerializer.Serialize<string>(null);
174+
175+
using var state = MemoryPackReaderOptionalStatePool.Rent(null);
176+
var reader = new MemoryPackReader(bin, state);
177+
178+
var isNull = reader.PeekIsNull();
179+
isNull.Should().BeTrue();
180+
}
170181
}

0 commit comments

Comments
 (0)