From b2be0e1b8fa5f31e146f32fcc79b195365865bbc Mon Sep 17 00:00:00 2001 From: matt-whitfield-scopely <167085999+matt-whitfield-scopely@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:32:20 +0100 Subject: [PATCH 1/6] Initial commit to demonstrate method --- global.json | 2 +- src/protobuf-net.Test/protobuf-net.Test.csproj | 4 ++-- src/protobuf-net/ProtoReader.cs | 5 +++++ src/protobuf-net/Serializer.cs | 2 ++ src/protobuf-net/Serializers/ListDecorator.cs | 12 ++++++++++++ src/protobuf-net/Serializers/TypeSerializer.cs | 1 + src/protobuf-net/protobuf-net.csproj | 2 +- 7 files changed, 24 insertions(+), 4 deletions(-) diff --git a/global.json b/global.json index 759654107..966112cab 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "2.1.500" + "version": "2.1.818" }, "msbuild-sdks": { "MSBuild.Sdk.Extras": "1.5.4", diff --git a/src/protobuf-net.Test/protobuf-net.Test.csproj b/src/protobuf-net.Test/protobuf-net.Test.csproj index adea41d4e..c4e913119 100644 --- a/src/protobuf-net.Test/protobuf-net.Test.csproj +++ b/src/protobuf-net.Test/protobuf-net.Test.csproj @@ -3,11 +3,11 @@ false - net452 + netcoreapp2.1 net Debug;Release;VS - + FEAT_COMPILER;NO_NHIBERNATE;COREFX;NO_INTERNAL_CONTEXT core diff --git a/src/protobuf-net/ProtoReader.cs b/src/protobuf-net/ProtoReader.cs index ec3b52a82..8cf5faa24 100644 --- a/src/protobuf-net/ProtoReader.cs +++ b/src/protobuf-net/ProtoReader.cs @@ -33,6 +33,11 @@ public sealed class ProtoReader : IDisposable /// public int FieldNumber => fieldNumber; + /// + /// Returns true if the field being processed is an empty list. + /// + public bool IsEmptyList => (fieldNumber & Serializer.EmptyListFlag) == Serializer.EmptyListFlag; + /// /// Indicates the underlying proto serialization format on the wire. /// diff --git a/src/protobuf-net/Serializer.cs b/src/protobuf-net/Serializer.cs index 605dc93f8..7ae72aee0 100644 --- a/src/protobuf-net/Serializer.cs +++ b/src/protobuf-net/Serializer.cs @@ -18,6 +18,8 @@ namespace ProtoBuf /// public static class Serializer { + public const int EmptyListFlag = 0x01000000; + #if !NO_RUNTIME /// /// Suggest a .proto definition for the given type diff --git a/src/protobuf-net/Serializers/ListDecorator.cs b/src/protobuf-net/Serializers/ListDecorator.cs index 82bb128e8..3882fd778 100644 --- a/src/protobuf-net/Serializers/ListDecorator.cs +++ b/src/protobuf-net/Serializers/ListDecorator.cs @@ -494,10 +494,12 @@ public override void Write(object value, ProtoWriter dest) token = new SubItemToken(); // default } bool checkForNull = !SupportNull; + bool isEmpty = true; foreach (object subItem in (IEnumerable)value) { if (checkForNull && subItem == null) { throw new NullReferenceException(); } Tail.Write(subItem, dest); + isEmpty = false; } if (writePacked) { @@ -510,6 +512,11 @@ public override void Write(object value, ProtoWriter dest) ProtoWriter.EndSubItem(token, dest); } } + else if (isEmpty) + { + ProtoWriter.WriteFieldHeader(fieldNumber | Serializer.EmptyListFlag, WireType.String, dest); + ProtoWriter.WriteString("", dest); + } } private bool CanUsePackedPrefix(object obj) => @@ -522,6 +529,11 @@ public override object Read(object value, ProtoReader source) int field = source.FieldNumber; object origValue = value; if (value == null) value = Activator.CreateInstance(concreteType); + if (source.IsEmptyList) + { + return value; + } + bool isList = IsList && !SuppressIList; if (packedWireType != WireType.None && source.WireType == WireType.String) { diff --git a/src/protobuf-net/Serializers/TypeSerializer.cs b/src/protobuf-net/Serializers/TypeSerializer.cs index dbb24246f..3cb051d5c 100644 --- a/src/protobuf-net/Serializers/TypeSerializer.cs +++ b/src/protobuf-net/Serializers/TypeSerializer.cs @@ -198,6 +198,7 @@ public object Read(object value, ProtoReader source) } for (int i = lastFieldIndex; i < fieldNumbers.Length; i++) { + fieldNumber &= ~Serializer.EmptyListFlag; if (fieldNumbers[i] == fieldNumber) { IProtoSerializer ser = serializers[i]; diff --git a/src/protobuf-net/protobuf-net.csproj b/src/protobuf-net/protobuf-net.csproj index d95e578bd..447fecc14 100644 --- a/src/protobuf-net/protobuf-net.csproj +++ b/src/protobuf-net/protobuf-net.csproj @@ -3,7 +3,7 @@ protobuf-net protobuf-net Provides simple access to fast and efficient "Protocol Buffers" serialization from .NET applications - net35;net451;netstandard2.0;netcoreapp2.1 + netstandard2.0 true EMIT_ASSEMBLY_INFO From 1139c9e5e04e74a7166d778cbcd91bdeabf48cd3 Mon Sep 17 00:00:00 2001 From: matt-whitfield-scopely <167085999+matt-whitfield-scopely@users.noreply.github.com> Date: Tue, 18 Jun 2024 18:15:01 +0100 Subject: [PATCH 2/6] Commit to show the compiler changes needed --- src/protobuf-net.Test/Meta/Lists.cs | 47 +++++++++++++++++++ src/protobuf-net/Compiler/CompilerContext.cs | 11 +++++ src/protobuf-net/ProtoWriter.cs | 6 +++ src/protobuf-net/Serializers/ListDecorator.cs | 33 ++++++++++--- .../Serializers/TypeSerializer.cs | 4 ++ 5 files changed, 95 insertions(+), 6 deletions(-) diff --git a/src/protobuf-net.Test/Meta/Lists.cs b/src/protobuf-net.Test/Meta/Lists.cs index c41d3bdf7..8d64d80eb 100644 --- a/src/protobuf-net.Test/Meta/Lists.cs +++ b/src/protobuf-net.Test/Meta/Lists.cs @@ -124,6 +124,53 @@ public void RoundTripTypedList_String() Assert.True(obj.ListString.SequenceEqual(clone.ListString)); } + [Fact] + public void RoundTripTypedList_String_Null() + { + var model = TypeModel.Create(); + model.Add(typeof(TypeWithLists), false).Add(1, "ListString"); + TypeWithLists obj = new TypeWithLists(); + obj.ListString = null; + + TypeWithLists clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.ListString); + + model.CompileInPlace(); + clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.ListString); + + clone = (TypeWithLists)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.ListString); + } + + [Fact] + public void RoundTripTypedList_String_Empty() + { + var model = TypeModel.Create(); + model.Add(typeof(TypeWithLists), false).Add(1, "ListString"); + TypeWithLists obj = new TypeWithLists(); + obj.ListString = new List(); + + TypeWithLists clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.ListString); + Assert.Empty(clone.ListString); + + model.CompileInPlace(); + clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.ListString); + Assert.Empty(clone.ListString); + + clone = (TypeWithLists)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.ListString); + Assert.Empty(clone.ListString); + } + [Fact] public void RoundTripTypedIList_String() { diff --git a/src/protobuf-net/Compiler/CompilerContext.cs b/src/protobuf-net/Compiler/CompilerContext.cs index 1fa5073da..1180e21a9 100644 --- a/src/protobuf-net/Compiler/CompilerContext.cs +++ b/src/protobuf-net/Compiler/CompilerContext.cs @@ -399,6 +399,12 @@ public void LoadReaderWriter() Emit(isStatic ? OpCodes.Ldarg_1 : OpCodes.Ldarg_2); } + public void SetTo1(Local local) + { + il.Emit(OpCodes.Ldc_I4_1); + StoreValue(local); + } + public void StoreValue(Local local) { if (local == this.InputValue) @@ -1237,6 +1243,11 @@ internal void Add() Emit(OpCodes.Add); } + internal void And() + { + Emit(OpCodes.And); + } + internal void LoadLength(Local arr, bool zeroIfNull) { Helpers.DebugAssert(arr.Type.IsArray && arr.Type.GetArrayRank() == 1); diff --git a/src/protobuf-net/ProtoWriter.cs b/src/protobuf-net/ProtoWriter.cs index 20705f6c8..38db395ab 100644 --- a/src/protobuf-net/ProtoWriter.cs +++ b/src/protobuf-net/ProtoWriter.cs @@ -172,6 +172,12 @@ internal static void WriteHeaderCore(int fieldNumber, WireType wireType, ProtoWr WriteUInt32Variant(header, writer); } + public static void WriteEmptyList(int fieldNumber, ProtoWriter writer) + { + ProtoWriter.WriteFieldHeader(fieldNumber | Serializer.EmptyListFlag, WireType.String, writer); + ProtoWriter.WriteString("", writer); + } + /// /// Writes a byte-array to the stream; supported wire-types: String /// diff --git a/src/protobuf-net/Serializers/ListDecorator.cs b/src/protobuf-net/Serializers/ListDecorator.cs index 3882fd778..a5716cde2 100644 --- a/src/protobuf-net/Serializers/ListDecorator.cs +++ b/src/protobuf-net/Serializers/ListDecorator.cs @@ -153,9 +153,15 @@ protected override void EmitRead(ProtoBuf.Compiler.CompilerContext ctx, ProtoBuf ctx.MarkLabel(notNull); } + var complete = ctx.DefineLabel(); + ctx.LoadReaderWriter(); + ctx.LoadValue(typeof(ProtoReader).GetProperty(nameof(ProtoReader.IsEmptyList))); + ctx.BranchIfTrue(complete, false); + bool castListForAdd = !add.DeclaringType.IsAssignableFrom(declaredType); EmitReadList(ctx, list, Tail, add, packedWireType, castListForAdd); + ctx.MarkLabel(complete); if (returnList) { if (AppendToCollection && origlist != null) @@ -406,7 +412,8 @@ internal static MethodInfo GetEnumeratorInfo(TypeModel model, Type expectedType, #if FEAT_COMPILER protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBuf.Compiler.Local valueFrom) { - using (Compiler.Local list = ctx.GetLocalWithValue(ExpectedType, valueFrom)) + using (Compiler.Local list = ctx.GetLocalWithValue(ExpectedType, valueFrom), + valuesWritten = new Compiler.Local(ctx, ctx.MapType(typeof(bool)))) { MethodInfo getEnumerator = GetEnumeratorInfo(ctx.Model, out MethodInfo moveNext, out MethodInfo current); Helpers.DebugAssert(moveNext != null); @@ -417,6 +424,8 @@ protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBu using (Compiler.Local iter = new Compiler.Local(ctx, enumeratorType)) using (Compiler.Local token = writePacked ? new Compiler.Local(ctx, ctx.MapType(typeof(SubItemToken))) : null) { + Compiler.CodeLabel allDone = ctx.DefineLabel(); + ctx.InitLocal(typeof(bool), valuesWritten); if (writePacked) { ctx.LoadValue(fieldNumber); @@ -453,6 +462,8 @@ protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBu } Tail.EmitWrite(ctx, null); + ctx.SetTo1(valuesWritten); + ctx.MarkLabel(@next); ctx.LoadAddress(iter, enumeratorType); ctx.EmitCall(moveNext, enumeratorType); @@ -465,6 +476,17 @@ protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBu ctx.LoadReaderWriter(); ctx.EmitCall(ctx.MapType(typeof(ProtoWriter)).GetMethod("EndSubItem")); } + else + { + ctx.LoadValue(valuesWritten); + ctx.BranchIfTrue(allDone, false); + + ctx.LoadValue(fieldNumber); + ctx.LoadReaderWriter(); + ctx.EmitCall(ctx.MapType(typeof(ProtoWriter)).GetMethod(nameof(ProtoWriter.WriteEmptyList))); + } + + ctx.MarkLabel(allDone); } } } @@ -494,12 +516,12 @@ public override void Write(object value, ProtoWriter dest) token = new SubItemToken(); // default } bool checkForNull = !SupportNull; - bool isEmpty = true; + bool valuesWritten = false; foreach (object subItem in (IEnumerable)value) { if (checkForNull && subItem == null) { throw new NullReferenceException(); } Tail.Write(subItem, dest); - isEmpty = false; + valuesWritten = true; } if (writePacked) { @@ -512,10 +534,9 @@ public override void Write(object value, ProtoWriter dest) ProtoWriter.EndSubItem(token, dest); } } - else if (isEmpty) + else if (!valuesWritten) { - ProtoWriter.WriteFieldHeader(fieldNumber | Serializer.EmptyListFlag, WireType.String, dest); - ProtoWriter.WriteString("", dest); + ProtoWriter.WriteEmptyList(fieldNumber, dest); } } diff --git a/src/protobuf-net/Serializers/TypeSerializer.cs b/src/protobuf-net/Serializers/TypeSerializer.cs index 3cb051d5c..27bcefdc9 100644 --- a/src/protobuf-net/Serializers/TypeSerializer.cs +++ b/src/protobuf-net/Serializers/TypeSerializer.cs @@ -689,6 +689,10 @@ void IProtoSerializer.EmitRead(Compiler.CompilerContext ctx, Compiler.Local valu ctx.MarkLabel(@continue); ctx.EmitBasicRead("ReadFieldHeader", ctx.MapType(typeof(int))); ctx.CopyValue(); + + ctx.LoadValue(~Serializer.EmptyListFlag); + ctx.And(); + ctx.StoreValue(fieldNumber); ctx.LoadValue(0); ctx.BranchIfGreater(processField, false); From f46d2086ef249618066ad050b9849fa209f610a1 Mon Sep 17 00:00:00 2001 From: matt-whitfield-scopely <167085999+matt-whitfield-scopely@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:13:08 +0100 Subject: [PATCH 3/6] Implementations and tests for other types --- src/protobuf-net.Test/Meta/Lists.cs | 126 ++++++++++++++++++ .../Serializers/IReadOnlyCollectionTests.cs | 37 ++++- .../Serializers/KeyValuePairTests.cs | 41 ++++++ src/protobuf-net/Meta/TypeModel.cs | 4 + .../Serializers/ArrayDecorator.cs | 22 +++ src/protobuf-net/Serializers/ListDecorator.cs | 6 +- src/protobuf-net/Serializers/MapDecorator.cs | 34 +++++ 7 files changed, 266 insertions(+), 4 deletions(-) diff --git a/src/protobuf-net.Test/Meta/Lists.cs b/src/protobuf-net.Test/Meta/Lists.cs index 8d64d80eb..270c3eee9 100644 --- a/src/protobuf-net.Test/Meta/Lists.cs +++ b/src/protobuf-net.Test/Meta/Lists.cs @@ -198,6 +198,53 @@ public void RoundTripTypedIList_String() Assert.True(obj.IListStringTyped.SequenceEqual(clone.IListStringTyped)); } + [Fact] + public void RoundTripTypedIList_String_Null() + { + var model = TypeModel.Create(); + model.Add(typeof(TypeWithLists), false).Add(2, "IListStringTyped"); + TypeWithLists obj = new TypeWithLists(); + obj.IListStringTyped = null; + + TypeWithLists clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.IListStringTyped); + + model.CompileInPlace(); + clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.IListStringTyped); + + clone = (TypeWithLists)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.IListStringTyped); + } + + [Fact] + public void RoundTripTypedIList_String_Empty() + { + var model = TypeModel.Create(); + model.Add(typeof(TypeWithLists), false).Add(2, "IListStringTyped"); + TypeWithLists obj = new TypeWithLists(); + obj.IListStringTyped = new List(); + + TypeWithLists clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.IListStringTyped); + Assert.True(obj.IListStringTyped.Count == 0); + + model.CompileInPlace(); + clone = (TypeWithLists)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.IListStringTyped); + Assert.True(obj.IListStringTyped.Count == 0); + + clone = (TypeWithLists)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.IListStringTyped); + Assert.True(obj.IListStringTyped.Count == 0); + } + [Fact] public void RoundTripArrayList_String() @@ -362,6 +409,85 @@ public void RoundTripIList_Int32() Assert.True(obj.IListInt32Untyped.Cast().SequenceEqual(clone.IListInt32Untyped.Cast())); } + [Fact] + public void RoundTripArray_String() + { + var model = TypeModel.Create(); + model.Add(typeof(Arrays), false).Add(4, "BasicArray"); + Arrays obj = new Arrays(); + obj.BasicArray = new[] { "abc", "def" }; + + Arrays clone = (Arrays)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.BasicArray); + Assert.True(obj.BasicArray.SequenceEqual(clone.BasicArray)); + + model.CompileInPlace(); + clone = (Arrays)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.BasicArray); + Assert.True(obj.BasicArray.SequenceEqual(clone.BasicArray)); + + clone = (Arrays)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.BasicArray); + Assert.True(obj.BasicArray.SequenceEqual(clone.BasicArray)); + } + + + [Fact] + public void RoundTripArray_String_Null() + { + var model = TypeModel.Create(); + model.Add(typeof(Arrays), false).Add(4, "BasicArray"); + Arrays obj = new Arrays(); + obj.BasicArray = null; + + Arrays clone = (Arrays)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.BasicArray); + + model.CompileInPlace(); + clone = (Arrays)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.BasicArray); + + clone = (Arrays)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.Null(clone.BasicArray); + } + + + [Fact] + public void RoundTripArray_String_Empty() + { + var model = TypeModel.Create(); + model.Add(typeof(Arrays), false).Add(4, "BasicArray"); + Arrays obj = new Arrays(); + obj.BasicArray = new string[0]; + + Arrays clone = (Arrays)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.BasicArray); + Assert.True(obj.BasicArray.Length == 0); + + model.CompileInPlace(); + clone = (Arrays)model.DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.BasicArray); + Assert.True(obj.BasicArray.Length == 0); + + clone = (Arrays)model.Compile().DeepClone(obj); + Assert.NotNull(clone); + Assert.NotNull(clone.BasicArray); + Assert.True(obj.BasicArray.Length == 0); + } + + public class Arrays + { + public string[] BasicArray { get; set; } + } + public class NastyType { diff --git a/src/protobuf-net.Test/Serializers/IReadOnlyCollectionTests.cs b/src/protobuf-net.Test/Serializers/IReadOnlyCollectionTests.cs index 771bfc0de..a9d64db05 100644 --- a/src/protobuf-net.Test/Serializers/IReadOnlyCollectionTests.cs +++ b/src/protobuf-net.Test/Serializers/IReadOnlyCollectionTests.cs @@ -9,7 +9,7 @@ public class IReadOnlyCollectionTests [Fact] public void BasicIReadOnlyCollectionTest() { - var orig = new TypeWithIReadOnlyCollection { Items = new List{"abc", "def"} }; + var orig = new TypeWithIReadOnlyCollection { Items = new List { "abc", "def" } }; var model = TypeModel.Create(); var clone = (TypeWithIReadOnlyCollection)model.DeepClone(orig); Assert.Equal(orig.Items, clone.Items); //, "Runtime"); @@ -22,6 +22,41 @@ public void BasicIReadOnlyCollectionTest() Assert.Equal(orig.Items, clone.Items); //, "Compile"); } + [Fact] + public void NullIReadOnlyCollectionTest() + { + var orig = new TypeWithIReadOnlyCollection { Items = null }; + var model = TypeModel.Create(); + var clone = (TypeWithIReadOnlyCollection)model.DeepClone(orig); + Assert.Null(clone.Items); + + model.CompileInPlace(); + clone = (TypeWithIReadOnlyCollection)model.DeepClone(orig); + Assert.Null(clone.Items); + + clone = (TypeWithIReadOnlyCollection)model.Compile().DeepClone(orig); + Assert.Null(clone.Items); + } + + [Fact] + public void EmptyIReadOnlyCollectionTest() + { + var orig = new TypeWithIReadOnlyCollection { Items = new List() }; + var model = TypeModel.Create(); + var clone = (TypeWithIReadOnlyCollection)model.DeepClone(orig); + Assert.NotNull(clone.Items); + Assert.True(clone.Items.Count == 0); + + model.CompileInPlace(); + clone = (TypeWithIReadOnlyCollection)model.DeepClone(orig); + Assert.NotNull(clone.Items); + Assert.True(clone.Items.Count == 0); + + clone = (TypeWithIReadOnlyCollection)model.Compile().DeepClone(orig); + Assert.NotNull(clone.Items); + Assert.True(clone.Items.Count == 0); + } + [ProtoContract] public class TypeWithIReadOnlyCollection { diff --git a/src/protobuf-net.Test/Serializers/KeyValuePairTests.cs b/src/protobuf-net.Test/Serializers/KeyValuePairTests.cs index 886dd300e..9eb0c4f1e 100644 --- a/src/protobuf-net.Test/Serializers/KeyValuePairTests.cs +++ b/src/protobuf-net.Test/Serializers/KeyValuePairTests.cs @@ -114,6 +114,47 @@ public void TypeWithDictionaryTest() Assert.Equal(123.45M, clone.Data["abc"]); //, "Runtime"); } + [Fact] + public void TypeWithDictionaryNullTest() + { + var orig = new TypeWithDictionary { Data = null }; + var model = TypeModel.Create(); + var clone = (TypeWithDictionary)model.DeepClone(orig); + Assert.Null(clone.Data); + + model.Compile("TypeWithDictionaryTest", "TypeWithDictionaryTest.dll"); + PEVerify.Verify("TypeWithDictionaryTest.dll"); + + model.CompileInPlace(); + clone = (TypeWithDictionary)model.DeepClone(orig); + Assert.Null(clone.Data); + + clone = (TypeWithDictionary)model.Compile().DeepClone(orig); + Assert.Null(clone.Data); + } + + [Fact] + public void TypeWithDictionaryEmptyTest() + { + var orig = new TypeWithDictionary { Data = new Dictionary() }; + var model = TypeModel.Create(); + var clone = (TypeWithDictionary)model.DeepClone(orig); + Assert.NotNull(clone.Data); + Assert.True(clone.Data.Count == 0); + + model.Compile("TypeWithDictionaryTest", "TypeWithDictionaryTest.dll"); + PEVerify.Verify("TypeWithDictionaryTest.dll"); + + model.CompileInPlace(); + clone = (TypeWithDictionary)model.DeepClone(orig); + Assert.NotNull(clone.Data); + Assert.True(clone.Data.Count == 0); + + clone = (TypeWithDictionary)model.Compile().DeepClone(orig); + Assert.NotNull(clone.Data); + Assert.True(clone.Data.Count == 0); + } + [Fact] public void ShouldWorkWithAutoLoadDisabledRuntime() { diff --git a/src/protobuf-net/Meta/TypeModel.cs b/src/protobuf-net/Meta/TypeModel.cs index 32e594d13..436135fa6 100644 --- a/src/protobuf-net/Meta/TypeModel.cs +++ b/src/protobuf-net/Meta/TypeModel.cs @@ -1386,6 +1386,10 @@ public object DeepClone(object value, bool existingValue = false) writer.Close(); } ms.Position = 0; + + var s = ms.ToArray(); + var p = Convert.ToBase64String(s); + ProtoReader reader = null; try { diff --git a/src/protobuf-net/Serializers/ArrayDecorator.cs b/src/protobuf-net/Serializers/ArrayDecorator.cs index e86f8f018..9a9de2ef7 100644 --- a/src/protobuf-net/Serializers/ArrayDecorator.cs +++ b/src/protobuf-net/Serializers/ArrayDecorator.cs @@ -116,6 +116,19 @@ protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBu ctx.EmitCall(mappedWriter.GetMethod("EndSubItem")); } } + else + { + Compiler.CodeLabel allDone = ctx.DefineLabel(); + ctx.LoadLength(arr, false); + ctx.LoadValue(0); + ctx.BranchIfGreater(allDone, false); + + ctx.LoadValue(fieldNumber); + ctx.LoadReaderWriter(); + ctx.EmitCall(ctx.MapType(typeof(ProtoWriter)).GetMethod(nameof(ProtoWriter.WriteEmptyList))); + + ctx.MarkLabel(allDone); + } } } } @@ -204,11 +217,20 @@ public override void Write(object value, ProtoWriter dest) ProtoWriter.EndSubItem(token, dest); } } + else if (arr.Count == 0) + { + ProtoWriter.WriteEmptyList(fieldNumber, dest); + } } public override object Read(object value, ProtoReader source) { int field = source.FieldNumber; BasicList list = new BasicList(); + if (source.IsEmptyList) + { + return Array.CreateInstance(itemType, 0); + } + if (packedWireType != WireType.None && source.WireType == WireType.String) { SubItemToken token = ProtoReader.StartSubItem(source); diff --git a/src/protobuf-net/Serializers/ListDecorator.cs b/src/protobuf-net/Serializers/ListDecorator.cs index a5716cde2..d9a1b73ca 100644 --- a/src/protobuf-net/Serializers/ListDecorator.cs +++ b/src/protobuf-net/Serializers/ListDecorator.cs @@ -424,7 +424,6 @@ protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBu using (Compiler.Local iter = new Compiler.Local(ctx, enumeratorType)) using (Compiler.Local token = writePacked ? new Compiler.Local(ctx, ctx.MapType(typeof(SubItemToken))) : null) { - Compiler.CodeLabel allDone = ctx.DefineLabel(); ctx.InitLocal(typeof(bool), valuesWritten); if (writePacked) { @@ -478,15 +477,16 @@ protected override void EmitWrite(ProtoBuf.Compiler.CompilerContext ctx, ProtoBu } else { + Compiler.CodeLabel allDone = ctx.DefineLabel(); + ctx.LoadValue(valuesWritten); ctx.BranchIfTrue(allDone, false); ctx.LoadValue(fieldNumber); ctx.LoadReaderWriter(); ctx.EmitCall(ctx.MapType(typeof(ProtoWriter)).GetMethod(nameof(ProtoWriter.WriteEmptyList))); + ctx.MarkLabel(allDone); } - - ctx.MarkLabel(allDone); } } } diff --git a/src/protobuf-net/Serializers/MapDecorator.cs b/src/protobuf-net/Serializers/MapDecorator.cs index 033cf26a8..2addbec58 100644 --- a/src/protobuf-net/Serializers/MapDecorator.cs +++ b/src/protobuf-net/Serializers/MapDecorator.cs @@ -78,6 +78,11 @@ public override object Read(object untyped, ProtoReader source) TDictionary typed = AppendToCollection ? ((TDictionary)untyped) : null; if (typed == null) typed = (TDictionary)Activator.CreateInstance(concreteType); + if (source.IsEmptyList) + { + return typed; + } + do { var key = DefaultKey; @@ -109,6 +114,7 @@ public override object Read(object untyped, ProtoReader source) public override void Write(object untyped, ProtoWriter dest) { + bool valuesWritten = false; foreach (var pair in (TDictionary)untyped) { ProtoWriter.WriteFieldHeader(fieldNumber, wireType, dest); @@ -116,6 +122,11 @@ public override void Write(object untyped, ProtoWriter dest) if (pair.Key != null) keyTail.Write(pair.Key, dest); if (pair.Value != null) Tail.Write(pair.Value, dest); ProtoWriter.EndSubItem(token, dest); + valuesWritten = true; + } + if (!valuesWritten) + { + ProtoWriter.WriteEmptyList(fieldNumber, dest); } } @@ -134,7 +145,10 @@ protected override void EmitWrite(CompilerContext ctx, Local valueFrom) using (Compiler.Local iter = new Compiler.Local(ctx, enumeratorType)) using (Compiler.Local token = new Compiler.Local(ctx, typeof(SubItemToken))) using (Compiler.Local kvp = new Compiler.Local(ctx, itemType)) + using (Compiler.Local valuesWritten = new Compiler.Local(ctx, ctx.MapType(typeof(bool)))) { + ctx.InitLocal(typeof(bool), valuesWritten); + ctx.LoadAddress(list, ExpectedType); ctx.EmitCall(getEnumerator, ExpectedType); ctx.StoreValue(iter); @@ -176,11 +190,24 @@ protected override void EmitWrite(CompilerContext ctx, Local valueFrom) ctx.LoadReaderWriter(); ctx.EmitCall(ctx.MapType(typeof(ProtoWriter)).GetMethod("EndSubItem")); + ctx.SetTo1(valuesWritten); + ctx.MarkLabel(@next); ctx.LoadAddress(iter, enumeratorType); ctx.EmitCall(moveNext, enumeratorType); ctx.BranchIfTrue(body, false); } + + CodeLabel allDone = ctx.DefineLabel(); + + ctx.LoadValue(valuesWritten); + ctx.BranchIfTrue(allDone, false); + + ctx.LoadValue(fieldNumber); + ctx.LoadReaderWriter(); + ctx.EmitCall(ctx.MapType(typeof(ProtoWriter)).GetMethod(nameof(ProtoWriter.WriteEmptyList))); + + ctx.MarkLabel(allDone); } } protected override void EmitRead(CompilerContext ctx, Local valueFrom) @@ -207,6 +234,11 @@ protected override void EmitRead(CompilerContext ctx, Local valueFrom) ctx.MarkLabel(notNull); } + var readComplete = ctx.DefineLabel(); + ctx.LoadReaderWriter(); + ctx.LoadValue(typeof(ProtoReader).GetProperty(nameof(ProtoReader.IsEmptyList))); + ctx.BranchIfTrue(readComplete, false); + var redoFromStart = ctx.DefineLabel(); ctx.MarkLabel(redoFromStart); @@ -287,6 +319,8 @@ protected override void EmitRead(CompilerContext ctx, Local valueFrom) ctx.EmitCall(ctx.MapType(typeof(ProtoReader)).GetMethod("TryReadFieldHeader")); ctx.BranchIfTrue(redoFromStart, false); + ctx.MarkLabel(readComplete); + if (ReturnsValue) { ctx.LoadValue(list); From b5eb9fc86abc1b6b1736252150b66c828107e33b Mon Sep 17 00:00:00 2001 From: matt-whitfield-scopely <167085999+matt-whitfield-scopely@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:39:27 +0100 Subject: [PATCH 4/6] Reverting TypeModel change --- src/protobuf-net/Meta/TypeModel.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/protobuf-net/Meta/TypeModel.cs b/src/protobuf-net/Meta/TypeModel.cs index 436135fa6..9ffce8080 100644 --- a/src/protobuf-net/Meta/TypeModel.cs +++ b/src/protobuf-net/Meta/TypeModel.cs @@ -1387,9 +1387,6 @@ public object DeepClone(object value, bool existingValue = false) } ms.Position = 0; - var s = ms.ToArray(); - var p = Convert.ToBase64String(s); - ProtoReader reader = null; try { From b19509a4ca9aa1f3694829899e2738e5dd284f49 Mon Sep 17 00:00:00 2001 From: matt-whitfield-scopely <167085999+matt-whitfield-scopely@users.noreply.github.com> Date: Tue, 25 Jun 2024 09:03:34 +0100 Subject: [PATCH 5/6] Removing SDK spec --- global.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/global.json b/global.json index 966112cab..47a5edd25 100644 --- a/global.json +++ b/global.json @@ -1,7 +1,4 @@ { - "sdk": { - "version": "2.1.818" - }, "msbuild-sdks": { "MSBuild.Sdk.Extras": "1.5.4", "__MSBuild.Sdk.Extras": "1.6.20-preview" From 2fe87adf819a035c4093b3fc4dece0d44dd9962d Mon Sep 17 00:00:00 2001 From: matt-whitfield-scopely <167085999+matt-whitfield-scopely@users.noreply.github.com> Date: Wed, 26 Jun 2024 14:39:46 +0100 Subject: [PATCH 6/6] Updates to test against previous version binary and ensure that deserialization is not affected on older versions --- src/protobuf-net.Test/Meta/Lists.cs | 1 - .../PreviousVersions.Designer.cs | 73 ++++++ src/protobuf-net.Test/PreviousVersions.resx | 124 +++++++++ .../VersionStability/EmptyListTests.cs | 241 ++++++++++++++++++ .../protobuf-net.Test.csproj | 13 + .../protobuf-net_2_4_0_8641.dll | Bin 0 -> 277504 bytes src/protobuf-net/ProtoReader.cs | 9 + .../Serializers/ArrayDecorator.cs | 17 ++ .../Serializers/TypeSerializer.cs | 2 +- 9 files changed, 478 insertions(+), 2 deletions(-) create mode 100644 src/protobuf-net.Test/PreviousVersions.Designer.cs create mode 100644 src/protobuf-net.Test/PreviousVersions.resx create mode 100644 src/protobuf-net.Test/VersionStability/EmptyListTests.cs create mode 100644 src/protobuf-net.Test/protobuf-net_2_4_0_8641.dll diff --git a/src/protobuf-net.Test/Meta/Lists.cs b/src/protobuf-net.Test/Meta/Lists.cs index 270c3eee9..d0f5d2531 100644 --- a/src/protobuf-net.Test/Meta/Lists.cs +++ b/src/protobuf-net.Test/Meta/Lists.cs @@ -457,7 +457,6 @@ public void RoundTripArray_String_Null() Assert.Null(clone.BasicArray); } - [Fact] public void RoundTripArray_String_Empty() { diff --git a/src/protobuf-net.Test/PreviousVersions.Designer.cs b/src/protobuf-net.Test/PreviousVersions.Designer.cs new file mode 100644 index 000000000..7ff349897 --- /dev/null +++ b/src/protobuf-net.Test/PreviousVersions.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ProtoBuf { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class PreviousVersions { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal PreviousVersions() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProtoBuf.PreviousVersions", typeof(PreviousVersions).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] protobuf_net_2_4_0_8641 { + get { + object obj = ResourceManager.GetObject("protobuf_net_2_4_0_8641", resourceCulture); + return ((byte[])(obj)); + } + } + } +} diff --git a/src/protobuf-net.Test/PreviousVersions.resx b/src/protobuf-net.Test/PreviousVersions.resx new file mode 100644 index 000000000..48be536f1 --- /dev/null +++ b/src/protobuf-net.Test/PreviousVersions.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + protobuf-net_2_4_0_8641.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/protobuf-net.Test/VersionStability/EmptyListTests.cs b/src/protobuf-net.Test/VersionStability/EmptyListTests.cs new file mode 100644 index 000000000..da30308de --- /dev/null +++ b/src/protobuf-net.Test/VersionStability/EmptyListTests.cs @@ -0,0 +1,241 @@ +using System; +using System.Collections.Generic; +using Xunit; +using System.IO; +using System.Reflection; +using System.Linq; + +namespace ProtoBuf.VersionStability +{ + public class EmptyListTests + { + private void TestRoundTrip(T source, Action assertBoth) + where T : IHaveOtherMembers + { + TestRoundTrip(source, assertBoth, assertBoth); + } + + private void TestRoundTrip(T source, Action assertOld, Action assertNew) + where T : IHaveOtherMembers + { + var oldVersion = Assembly.Load(PreviousVersions.protobuf_net_2_4_0_8641); + var oldSerializer = oldVersion.GetType("ProtoBuf.Serializer"); + var oldDeserializeMethod = oldSerializer.GetMethod("Deserialize", new Type[] { typeof(Type), typeof(Stream) }); + + source.PreOtherMember = "Pre" + Guid.NewGuid().ToString(); + source.PostOtherMember = "Post" + Guid.NewGuid().ToString(); + + using (var memoryStream = new MemoryStream()) + { + Serializer.Serialize(memoryStream, source); + memoryStream.Position = 0; + T oldClone = (T)oldDeserializeMethod.Invoke(null, new object[] { typeof(T), memoryStream }); + assertOld(oldClone); + Assert.Equal(source.PreOtherMember, oldClone.PreOtherMember); + Assert.Equal(source.PostOtherMember, oldClone.PostOtherMember); + + memoryStream.Position = 0; + T newClone = Serializer.Deserialize(memoryStream); + assertNew(newClone); + Assert.Equal(source.PreOtherMember, oldClone.PreOtherMember); + Assert.Equal(source.PostOtherMember, oldClone.PostOtherMember); + } + } + + [Fact] + public void NullListCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ListTest { BasicList = null }, + clone => { + Assert.Null(clone.BasicList); + }); + } + + [Fact] + public void EmptyListCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ListTest { BasicList = new List() }, + oldClone => { + Assert.Null(oldClone.BasicList); + }, + newClone => { + Assert.NotNull(newClone.BasicList); + Assert.Empty(newClone.BasicList); + }); + } + + [Fact] + public void ListCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ListTest { BasicList = new List { "a", "b" } }, + clone => { + Assert.True(clone.BasicList.SequenceEqual(new[] { "a", "b" })); + }); + } + + [Fact] + public void NullArrayCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ArrayTest { BasicArray = null }, + clone => { + Assert.Null(clone.BasicArray); + }); + } + + [Fact] + public void EmptyArrayCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ArrayTest { BasicArray = new string[0] }, + oldClone => { + Assert.Null(oldClone.BasicArray); + }, + newClone => { + Assert.NotNull(newClone.BasicArray); + Assert.Empty(newClone.BasicArray); + }); + } + + [Fact] + public void ArrayCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ArrayTest { BasicArray = new[] { "a", "b" } }, + clone => { + Assert.True(clone.BasicArray.SequenceEqual(new[] { "a", "b" })); + }); + } + + [Fact] + public void NullReadOnlyCollectionCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ReadOnlyCollectionTest { BasicList = null }, + clone => { + Assert.Null(clone.BasicList); + }); + } + + [Fact] + public void EmptyReadOnlyCollectionCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ReadOnlyCollectionTest { BasicList = new List() }, + oldClone => { + Assert.Null(oldClone.BasicList); + }, + newClone => { + Assert.NotNull(newClone.BasicList); + Assert.Empty(newClone.BasicList); + }); + } + + [Fact] + public void ReadOnlyCollectionCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new ReadOnlyCollectionTest { BasicList = new List { "a", "b" } }, + clone => { + Assert.True(clone.BasicList.SequenceEqual(new[] { "a", "b" })); + }); + } + + [Fact] + public void NullDictionaryCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new DictionaryTest { BasicDictionary = null }, + clone => { + Assert.Null(clone.BasicDictionary); + }); + } + + [Fact] + public void EmptyDictionaryCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new DictionaryTest { BasicDictionary = new Dictionary() }, + oldClone => { + Assert.Null(oldClone.BasicDictionary); + }, + newClone => { + Assert.NotNull(newClone.BasicDictionary); + Assert.Empty(newClone.BasicDictionary); + }); + } + + [Fact] + public void DictionaryCanBeDeserializedWithOldVersion() + { + TestRoundTrip( + new DictionaryTest { BasicDictionary = new Dictionary { { "a", "b" }, { "c", "d" } } }, + clone => { + Assert.Equal("b", clone.BasicDictionary["a"]); + Assert.Equal("d", clone.BasicDictionary["c"]); + }); + } + + public interface IHaveOtherMembers + { + string PreOtherMember { get; set; } + + string PostOtherMember { get; set; } + } + + [ProtoContract] + public class ListTest : IHaveOtherMembers + { + [ProtoMember(1)] + public string PreOtherMember { get; set; } + + [ProtoMember(2)] + public List BasicList { get; set; } + + [ProtoMember(3)] + public string PostOtherMember { get; set; } + } + + [ProtoContract] + public class ArrayTest : IHaveOtherMembers + { + [ProtoMember(1)] + public string PreOtherMember { get; set; } + + [ProtoMember(2)] + public string[] BasicArray { get; set; } + + [ProtoMember(3)] + public string PostOtherMember { get; set; } + } + + [ProtoContract] + public class ReadOnlyCollectionTest : IHaveOtherMembers + { + [ProtoMember(1)] + public string PreOtherMember { get; set; } + + [ProtoMember(2)] + public IReadOnlyCollection BasicList { get; set; } + + [ProtoMember(3)] + public string PostOtherMember { get; set; } + } + + [ProtoContract] + public class DictionaryTest : IHaveOtherMembers + { + [ProtoMember(1)] + public string PreOtherMember { get; set; } + + [ProtoMember(2)] + public Dictionary BasicDictionary { get; set; } + + [ProtoMember(3)] + public string PostOtherMember { get; set; } + } + } +} diff --git a/src/protobuf-net.Test/protobuf-net.Test.csproj b/src/protobuf-net.Test/protobuf-net.Test.csproj index c4e913119..60b471f31 100644 --- a/src/protobuf-net.Test/protobuf-net.Test.csproj +++ b/src/protobuf-net.Test/protobuf-net.Test.csproj @@ -53,6 +53,19 @@ + + + True + True + PreviousVersions.resx + + + + + ResXFileCodeGenerator + PreviousVersions.Designer.cs + + Always diff --git a/src/protobuf-net.Test/protobuf-net_2_4_0_8641.dll b/src/protobuf-net.Test/protobuf-net_2_4_0_8641.dll new file mode 100644 index 0000000000000000000000000000000000000000..f090f1caecc23e7f2c2caa534405eee2015d5d01 GIT binary patch literal 277504 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

}KEG(6Ke0~_XPeAF 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

gI{ zlM8e-2`HWaeeLn-N+?3W`69n>^-r~@1b&LL$@m>tEEpgC)4Y>WKPfq61cTCprMP*B z^NS7;WrCDua_uxm6CsyN+@OAJdv9zN@=quGDdrpN`Dv!dN(fkP{~K7#V6?FR`mH@b z&_MD#2A@kj1+E^E4w0k*>A{xB50ql0_n%SLKQ$1y;7Psve488A9PYU2UJ0D}=P|{< zLnCMUQ?T-Bi;vUnVe`jOOz_OZxm9>CB zPG<2B8%tpjGvl`yWB@}cTnBzSlt4>QZvBmY>t<{fiV`qpQ~uwi`LoD>3OXxt7Z)$Q z;Ocu!TRsIARN|{s*ox#5#gu#_*Ks}Z&+pfgyvL}O{8JU9c6%aHfm}n2g4<~yV_D*S z9app{A7gxnxn|(L2L2taG2aLWO@wtEYx@y`9ch_ShA_nWq#3A5W3B(26(;yhe0zj+ z`Ty+w-(~y1!2xR?g*f0hAMo#YA%&>^of5*P; zfaT=668D-Yi=7CLl3!p%4~c&x0PP~~7JQP^|H*ECCgrLN2-}Kw55G4)wpT)YkDS;G zAU8EBOmgK(Q6aak;m^P5{^xe!N2z0?Wrsf=qe||M5i4@_vCTsAZ$wexuV`#?*{!qu z&Nms3@jL#NapxU{E~HXfaC}Z>K!V4^ESE^yDPw_T2WI$g(1OO);!BQDHK7Yd6HnX) zSda|`uqYm_f_-(q7^dZ=8dWd>&;cYUs!TeYCppjK@Fc$h-`GmZJRj`H^WphGp39)nxLhuS zNn`WG3<{O!!)8Gb7PMy3p^(L3!bJSWqR@CA@XrSmK9~e#5taww#PeV?nOH12Pe6uR zm?oZ>%T&gZp*N2M(78;us)`B$nZ=?pSV9Jsg$WLmsmD@Pg*s@e3=W9J3j}z249Ef; zJq8RDLI4iog>abA6k({q4_By4WhpB&Mt@)c91MQAG#X7nu*Z$>rc6-+3b{Nc8>lAm zp|OBnEE)jkyK#gpL<4_#Vm6b(k74l>Sb7W&g#p|QWZ^FhQiX?6o92q;V_kGgfQz<^eLq1knbZ<$!5}NAngLa!Z9@LW-b9xRpsIm?%nve-i6jdDbgGUz9*D`P=Hh@1M~Tk`#?Of z3+5Zh1^MHySVd zq(yQUO373mq`(XibIJlGLtN`vOe)Mo6P3XR8a2qIGWi1CfN7`bfw_R0a|3Y%60tW= zW=tR*iK;4%CNx$WDFChELY75Xs@F6DFqldOLf(N6g2saR(a@ygEWW03S%?VOBPzbR ze93zdAR1Uc$Z*j%uz>$8NHS?O)@T>ZuvC~#C6HiMP)a3`SEf)2Bn#d|DVqfdK`mQd zgQ}#(lPv&N1HV`-B{r1-L_q;Vg97x*7Q@&?9;_#Y$|gz}2wxQ@nHY!*pt%HS3LSNa z3!u@85UL~q8A3GJY-o-su|RRp1N~UW8pQ&z!aPfjgR~J3HC4hMun3$P6bfHT1({R@ zLU3&437gH6tw3p&p^2mkl+iZn2?%>8P$dQh1&0q9HNI5Nm*nyj1kjSo#u<^w!G3Y| zz?OllF} z59xF@CaLg*BQhcw;X^#dph>boXkr8j@Pn8@>08E^6cf553&H-_ibya-RM1Y;FzK?f zuG3ME2^R>{KTZe?Tmi}~#Sa(|4?>Z_Frv8v6=y2(6TqBFj&i|Z(7?>d1^fhf0>e-+ zp|v_wnJ>KzA5eUFgVzBw0HRIfNps=DWrCp-qooF0%)(g`u+*4n6{F!d5X!-oKmrW0 z4pRlq3JHyTg2sU%lIEgIbAt@&^B_U6wifM^05y-dn(xU0qwU69%?m`wMA(Ho#E`cd z#0QK6gM87+mooWckuNs+Vv;Wv@}0cj9>DjkHC1L6-(5*Wom*T8~bc;5$ag&d?oxPmbv0zl~$ zFqMdj)8a{^h;Z&>0&2NXl?@hRvO`rTGJDN z=YT?(K|lum2smOS6comSIUW)abs=Jq2V+4bK4S{0w*=f#PJz2r<^_VGM_~nhCr7IW zp(fD8vCuY3IhcaT6C47 z9`-`J3;#TInW_-hBmA-EQjM`5)0pZ6Ad)B&3QyVvn(=S82xNS$4>=I<6%tI0F?g~a zAPq3&ZeUIr2DgAWhF8SQ>w`|6CW5owY7j1-4JK9n74mw;eGG>nR#m7p1n zG};RZU%H=YDIuQmnoJdlaIQdD46_dO0bLTpNMBJRUtA03I4EX;c_rBz4J|-Ykj|q7 zJPB|ghA4$`0XXqI3gQR|V?c;8C};sjQ zoTL4KN0@-i;u*p?lJ{5)_MjAe73Lu}EQJna8Auw+EkGyxN%oJu0YNgjEX9}^<5_}q z$$oH2Fg`3p5XLN^53M>$1mHlF>Ve#XP!VI*A!L|;C;}!5A@<|RcC#o-5CcNu3+6a- zMFYse56=*B!H;CWfM7z?XagZU8LGnqcQgz+ zO4jWsViM#JsNP$^;3$jqnBSpXkRM3>Khw8oU>jgW#V)x(K2ru)2cw@R0ZF(XDX~?CGSEd2HOMEECC-4Afss@r)X&aGFVq|wonBO1Afz3D8huEOMs-? zu%N_BNWLGNa0w|zgr>`ce2gN1ru%>iVf6Qsf$l*-izhq669VQjz_o*rA<#wSP$WTc zxm<|!`O<8@6nJrhFFnG7d6fxxviU#|40{?uo&wxM!0F)wqEJOWu{9E|U#i$44m;2X^%tDszZmM6UcA23jE7`?wn_QE(o6wDe=b^+rz=~-g- zpxM}{(zBx}C?hBHf-W)Un6QCYjTt2f@{K&iWn zk<@iUl%q$%Ng6@iz<$CcT;~eu1ib>XDUJ@M$Rp%}fS6}uf={7qfr+_H#N#YjjI%U= zw-B7cn~yW)f`x;>QgjuBVp7^{DiWOI)oy*8pVuAYB9lv zK@v3!LqT%i16NLNxIcwk984tvn+8ie8k;YXqa{T}mKlQi;le%>E*4{WVbC9AA9x*w zwHWA*99L{;@-g5Q=zvBL;Wq?>koc&Gkp2o)HX7|Y1}-S%gam_{AdjFM5lIsIg)u%% zHG$V{6cbNeKatTZ*p5K>uqjG_5~f(VigJSiz)BHAL;MR2AczG8l>A2I!Ezx;7>zrL zsRFN2G2+S0K!45tS-}2ONvHdBz5?EAu$3szt8rm3D+LM}pz62zGT0BI!e#~TA95k5 zN>Snkj@CdUwNFXqPf7HD*cBSEKPBm(lAKRT=BK2}r=;p=5(we>aFvOLpg;vSi$F;M zFyV|O_i82BZK!9d1g zF#uWATl9+1mzWELDuZ=^5}IPrW>{HD!w6FfZvnwxjJaSc(N+Rszd3j%@v7N2tnxTb z#a*Mi6%sk+OA3W9p-}e28Hq9t9*|$T%F&oYr@;S`My05{%g9?0Hzaf)f1|49cemqq z^;>Q?+3I?^e{)gsEL&f4a*0b}#@AK0Q9@q{Q|;ODxT?QI{SHdnF5he|2wL>z9E%4Y z%0D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 literal 0 HcmV?d00001 diff --git a/src/protobuf-net/ProtoReader.cs b/src/protobuf-net/ProtoReader.cs index 8cf5faa24..97404346a 100644 --- a/src/protobuf-net/ProtoReader.cs +++ b/src/protobuf-net/ProtoReader.cs @@ -664,6 +664,15 @@ public int ReadFieldHeader() { wireType = (WireType)(tag & 7); fieldNumber = (int)(tag >> 3); + + if (IsEmptyList) + { + // we emit an 'empty' flag as an empty string in the existing wire format, so that + // existing versions just skip the field. So we need to consume the empty string portion + // of that message + ReadString(); + } + if (fieldNumber < 1) throw new ProtoException("Invalid field in source data: " + fieldNumber.ToString()); } else diff --git a/src/protobuf-net/Serializers/ArrayDecorator.cs b/src/protobuf-net/Serializers/ArrayDecorator.cs index 9a9de2ef7..ea4d5bf3d 100644 --- a/src/protobuf-net/Serializers/ArrayDecorator.cs +++ b/src/protobuf-net/Serializers/ArrayDecorator.cs @@ -266,6 +266,12 @@ protected override void EmitRead(ProtoBuf.Compiler.CompilerContext ctx, ProtoBuf { ctx.EmitCtor(listType); ctx.StoreValue(list); + + var createEmpty = ctx.DefineLabel(); + ctx.LoadReaderWriter(); + ctx.LoadValue(typeof(ProtoReader).GetProperty(nameof(ProtoReader.IsEmptyList))); + ctx.BranchIfTrue(createEmpty, false); + ListDecorator.EmitReadList(ctx, list, Tail, listType.GetMethod("Add"), packedWireType, false); // leave this "using" here, as it can share the "FieldNumber" local with EmitReadList @@ -321,6 +327,17 @@ protected override void EmitRead(ProtoBuf.Compiler.CompilerContext ctx, ProtoBuf } ctx.EmitCall(copyTo); } + + var complete = ctx.DefineLabel(); + ctx.Branch(complete, false); + + ctx.MarkLabel(createEmpty); + + ctx.LoadValue(0); + ctx.CreateArray(itemType, null); + ctx.StoreValue(newArr); + + ctx.MarkLabel(complete); ctx.LoadValue(newArr); } diff --git a/src/protobuf-net/Serializers/TypeSerializer.cs b/src/protobuf-net/Serializers/TypeSerializer.cs index 27bcefdc9..f41f7b94e 100644 --- a/src/protobuf-net/Serializers/TypeSerializer.cs +++ b/src/protobuf-net/Serializers/TypeSerializer.cs @@ -192,13 +192,13 @@ public object Read(object value, ProtoReader source) while ((fieldNumber = source.ReadFieldHeader()) > 0) { fieldHandled = false; + fieldNumber &= ~Serializer.EmptyListFlag; if (fieldNumber < lastFieldNumber) { lastFieldNumber = lastFieldIndex = 0; } for (int i = lastFieldIndex; i < fieldNumbers.Length; i++) { - fieldNumber &= ~Serializer.EmptyListFlag; if (fieldNumbers[i] == fieldNumber) { IProtoSerializer ser = serializers[i];