Skip to content

Commit f284088

Browse files
committed
When deserialize length is 0, the return array should be Array.Empty<T>().
1 parent ebdb29c commit f284088

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/MessagePack.UnityClient/Assets/Scripts/MessagePack/Formatters/CollectionFormatter.cs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,30 @@ public T[] Deserialize(ref MessagePackReader reader, MessagePackSerializerOption
4343
{
4444
return default;
4545
}
46-
else
46+
47+
var len = reader.ReadArrayHeader();
48+
if (len == 0)
4749
{
48-
IMessagePackFormatter<T> formatter = options.Resolver.GetFormatterWithVerify<T>();
50+
return Array.Empty<T>();
51+
}
4952

50-
var len = reader.ReadArrayHeader();
51-
var array = new T[len];
52-
options.Security.DepthStep(ref reader);
53-
try
54-
{
55-
for (int i = 0; i < array.Length; i++)
56-
{
57-
reader.CancellationToken.ThrowIfCancellationRequested();
58-
array[i] = formatter.Deserialize(ref reader, options);
59-
}
60-
}
61-
finally
53+
IMessagePackFormatter<T> formatter = options.Resolver.GetFormatterWithVerify<T>();
54+
var array = new T[len];
55+
options.Security.DepthStep(ref reader);
56+
try
57+
{
58+
for (int i = 0; i < array.Length; i++)
6259
{
63-
reader.Depth--;
60+
reader.CancellationToken.ThrowIfCancellationRequested();
61+
array[i] = formatter.Deserialize(ref reader, options);
6462
}
65-
66-
return array;
6763
}
64+
finally
65+
{
66+
reader.Depth--;
67+
}
68+
69+
return array;
6870
}
6971
}
7072

0 commit comments

Comments
 (0)