diff --git a/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs b/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs index 497b5816..7f1f9462 100644 --- a/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs +++ b/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs @@ -21,10 +21,11 @@ internal override void SerializeOverride(BoundedStream stream, EventShuttle even var valueStream = (Stream) Value; var length = GetConstFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; if (length != null) { - var valueStreamlet = new Streamlet(valueStream, valueStream.Position, length.ByteCount); + var valueStreamlet = new Streamlet(valueStream, offset, length.ByteCount); valueStreamlet.CopyTo(stream); } else @@ -38,10 +39,11 @@ internal override async Task SerializeOverrideAsync(BoundedStream stream, EventS var valueStream = (Stream)Value; var length = GetConstFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; if (length != null) { - var valueStreamlet = new Streamlet(valueStream, valueStream.Position, length.ByteCount); + var valueStreamlet = new Streamlet(valueStream, offset, length.ByteCount); await valueStreamlet.CopyToAsync(stream, CopyToBufferSize, cancellationToken).ConfigureAwait(false); } else @@ -55,10 +57,11 @@ internal override void DeserializeOverride(BoundedStream stream, SerializationOp var rootStream = GetRootStream(stream); var length = GetFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; Value = length != null - ? new Streamlet(rootStream, rootStream.Position, length.ByteCount) - : new Streamlet(rootStream, rootStream.Position); + ? new Streamlet(rootStream, offset, length.ByteCount) + : new Streamlet(rootStream, offset); if (length != null) { @@ -77,10 +80,11 @@ internal override async Task DeserializeOverrideAsync(BoundedStream stream, Seri var rootStream = GetRootStream(stream); var length = GetFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; Value = length != null - ? new Streamlet(rootStream, rootStream.Position, length.ByteCount) - : new Streamlet(rootStream, rootStream.Position); + ? new Streamlet(rootStream, offset, length.ByteCount) + : new Streamlet(rootStream, offset); if (length != null) {