Skip to content

Commit 928ba8f

Browse files
[release/6.0] Manually backporting #74599 to 6.0 (#78247)
* Manually backporting #74599 to 7.0 for RC2. (#75366) * Manually backporting #74599 to 7.0 for RC2. * Fix a couple mis-copied lines of code and a couple nits. * Missed some file updates when manually porting. * Advance when reading decimals regardless of endian-ness. * Backport the actual 7.0 implementation for decimal on big-endian platforms.
1 parent 3b2f358 commit 928ba8f

File tree

7 files changed

+552
-141
lines changed

7 files changed

+552
-141
lines changed

src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReader.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,14 +1346,14 @@ private unsafe int ReadArray(float[] array, int offset, int count)
13461346

13471347
public override int ReadArray(string localName, string namespaceUri, float[] array, int offset, int count)
13481348
{
1349-
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.FloatTextWithEndElement))
1349+
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.FloatTextWithEndElement) && BitConverter.IsLittleEndian)
13501350
return ReadArray(array, offset, count);
13511351
return base.ReadArray(localName, namespaceUri, array, offset, count);
13521352
}
13531353

13541354
public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, float[] array, int offset, int count)
13551355
{
1356-
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.FloatTextWithEndElement))
1356+
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.FloatTextWithEndElement) && BitConverter.IsLittleEndian)
13571357
return ReadArray(array, offset, count);
13581358
return base.ReadArray(localName, namespaceUri, array, offset, count);
13591359
}
@@ -1372,14 +1372,14 @@ private unsafe int ReadArray(double[] array, int offset, int count)
13721372

13731373
public override int ReadArray(string localName, string namespaceUri, double[] array, int offset, int count)
13741374
{
1375-
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DoubleTextWithEndElement))
1375+
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DoubleTextWithEndElement) && BitConverter.IsLittleEndian)
13761376
return ReadArray(array, offset, count);
13771377
return base.ReadArray(localName, namespaceUri, array, offset, count);
13781378
}
13791379

13801380
public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, double[] array, int offset, int count)
13811381
{
1382-
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DoubleTextWithEndElement))
1382+
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DoubleTextWithEndElement) && BitConverter.IsLittleEndian)
13831383
return ReadArray(array, offset, count);
13841384
return base.ReadArray(localName, namespaceUri, array, offset, count);
13851385
}
@@ -1398,14 +1398,14 @@ private unsafe int ReadArray(decimal[] array, int offset, int count)
13981398

13991399
public override int ReadArray(string localName, string namespaceUri, decimal[] array, int offset, int count)
14001400
{
1401-
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DecimalTextWithEndElement))
1401+
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DecimalTextWithEndElement) && BitConverter.IsLittleEndian)
14021402
return ReadArray(array, offset, count);
14031403
return base.ReadArray(localName, namespaceUri, array, offset, count);
14041404
}
14051405

14061406
public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal[] array, int offset, int count)
14071407
{
1408-
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DecimalTextWithEndElement))
1408+
if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DecimalTextWithEndElement) && BitConverter.IsLittleEndian)
14091409
return ReadArray(array, offset, count);
14101410
return base.ReadArray(localName, namespaceUri, array, offset, count);
14111411
}

0 commit comments

Comments
 (0)