|
2 | 2 | // The .NET Foundation licenses this file to you under the MIT license. |
3 | 3 |
|
4 | 4 | using System.Collections; |
| 5 | +using System.Collections.Generic; |
| 6 | +using System.Diagnostics; |
| 7 | +using System.Diagnostics.CodeAnalysis; |
5 | 8 | using System.Drawing; |
6 | 9 | using System.Runtime.Serialization.BinaryFormat; |
| 10 | +using System.Windows.Forms.BinaryFormat.Deserializer; |
7 | 11 |
|
8 | 12 | namespace System.Windows.Forms.BinaryFormat; |
9 | 13 |
|
@@ -162,22 +166,22 @@ static bool Get(BinaryFormattedObject format, [NotNullWhen(true)] out object? li |
162 | 166 | // BinaryFormatter serializes the entire backing array, so we need to trim it down to the size of the list. |
163 | 167 | list = arrayRecord switch |
164 | 168 | { |
165 | | - ArrayRecord<string> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
166 | | - ArrayRecord<bool> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
167 | | - ArrayRecord<byte> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
168 | | - ArrayRecord<sbyte> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
169 | | - ArrayRecord<char> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
170 | | - ArrayRecord<short> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
171 | | - ArrayRecord<ushort> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
172 | | - ArrayRecord<int> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
173 | | - ArrayRecord<uint> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
174 | | - ArrayRecord<long> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
175 | | - ArrayRecord<ulong> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
176 | | - ArrayRecord<float> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
177 | | - ArrayRecord<double> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
178 | | - ArrayRecord<decimal> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
179 | | - ArrayRecord<TimeSpan> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
180 | | - ArrayRecord<DateTime> ar => ar.ToArray(maxLength: Array.MaxLength).CreateTrimmedList(size), |
| 169 | + ArrayRecord<string> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 170 | + ArrayRecord<bool> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 171 | + ArrayRecord<byte> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 172 | + ArrayRecord<sbyte> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 173 | + ArrayRecord<char> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 174 | + ArrayRecord<short> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 175 | + ArrayRecord<ushort> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 176 | + ArrayRecord<int> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 177 | + ArrayRecord<uint> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 178 | + ArrayRecord<long> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 179 | + ArrayRecord<ulong> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 180 | + ArrayRecord<float> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 181 | + ArrayRecord<double> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 182 | + ArrayRecord<decimal> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 183 | + ArrayRecord<TimeSpan> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
| 184 | + ArrayRecord<DateTime> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength).CreateTrimmedList(size), |
181 | 185 | _ => throw new InvalidOperationException() |
182 | 186 | }; |
183 | 187 |
|
@@ -241,22 +245,22 @@ static bool Get(BinaryFormattedObject format, [NotNullWhen(true)] out object? va |
241 | 245 |
|
242 | 246 | value = format.RootRecord switch |
243 | 247 | { |
244 | | - ArrayRecord<string> ar => ar.ToArray(maxLength: Array.MaxLength), |
245 | | - ArrayRecord<bool> ar => ar.ToArray(maxLength: Array.MaxLength), |
246 | | - ArrayRecord<byte> ar => ar.ToArray(maxLength: Array.MaxLength), |
247 | | - ArrayRecord<sbyte> ar => ar.ToArray(maxLength: Array.MaxLength), |
248 | | - ArrayRecord<char> ar => ar.ToArray(maxLength: Array.MaxLength), |
249 | | - ArrayRecord<short> ar => ar.ToArray(maxLength: Array.MaxLength), |
250 | | - ArrayRecord<ushort> ar => ar.ToArray(maxLength: Array.MaxLength), |
251 | | - ArrayRecord<int> ar => ar.ToArray(maxLength: Array.MaxLength), |
252 | | - ArrayRecord<uint> ar => ar.ToArray(maxLength: Array.MaxLength), |
253 | | - ArrayRecord<long> ar => ar.ToArray(maxLength: Array.MaxLength), |
254 | | - ArrayRecord<ulong> ar => ar.ToArray(maxLength: Array.MaxLength), |
255 | | - ArrayRecord<float> ar => ar.ToArray(maxLength: Array.MaxLength), |
256 | | - ArrayRecord<double> ar => ar.ToArray(maxLength: Array.MaxLength), |
257 | | - ArrayRecord<decimal> ar => ar.ToArray(maxLength: Array.MaxLength), |
258 | | - ArrayRecord<TimeSpan> ar => ar.ToArray(maxLength: Array.MaxLength), |
259 | | - ArrayRecord<DateTime> ar => ar.ToArray(maxLength: Array.MaxLength), |
| 248 | + ArrayRecord<string> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 249 | + ArrayRecord<bool> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 250 | + ArrayRecord<byte> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 251 | + ArrayRecord<sbyte> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 252 | + ArrayRecord<char> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 253 | + ArrayRecord<short> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 254 | + ArrayRecord<ushort> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 255 | + ArrayRecord<int> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 256 | + ArrayRecord<uint> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 257 | + ArrayRecord<long> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 258 | + ArrayRecord<ulong> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 259 | + ArrayRecord<float> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 260 | + ArrayRecord<double> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 261 | + ArrayRecord<decimal> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 262 | + ArrayRecord<TimeSpan> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
| 263 | + ArrayRecord<DateTime> ar => ar.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength), |
260 | 264 | _ => throw new InvalidOperationException() |
261 | 265 | }; |
262 | 266 |
|
@@ -300,8 +304,8 @@ static bool Get(BinaryFormattedObject format, [NotNullWhen(true)] out object? ha |
300 | 304 | } |
301 | 305 |
|
302 | 306 | Hashtable temp = new((int)keysRecord.Length); |
303 | | - object?[] keys = keysRecord.ToArray(maxLength: Array.MaxLength); |
304 | | - object?[] values = valuesRecord.ToArray(maxLength: Array.MaxLength); |
| 307 | + object?[] keys = keysRecord.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength); |
| 308 | + object?[] values = valuesRecord.ToArray(maxLength: ArrayRecordDeserializer.MaxArrayLength); |
305 | 309 | for (int i = 0; i < keys.Length; i++) |
306 | 310 | { |
307 | 311 | object? key = keys[i]; |
|
0 commit comments