diff options
Diffstat (limited to 'src/mscorlib/shared/System/Text/UTF32Encoding.cs')
-rw-r--r-- | src/mscorlib/shared/System/Text/UTF32Encoding.cs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mscorlib/shared/System/Text/UTF32Encoding.cs b/src/mscorlib/shared/System/Text/UTF32Encoding.cs index 10161d193e..260518e21c 100644 --- a/src/mscorlib/shared/System/Text/UTF32Encoding.cs +++ b/src/mscorlib/shared/System/Text/UTF32Encoding.cs @@ -39,6 +39,9 @@ namespace System.Text internal static readonly UTF32Encoding s_default = new UTF32Encoding(bigEndian: false, byteOrderMark: true); internal static readonly UTF32Encoding s_bigEndianDefault = new UTF32Encoding(bigEndian: true, byteOrderMark: true); + private static readonly byte[] s_bigEndianPreamble = new byte[4] { 0x00, 0x00, 0xFE, 0xFF }; + private static readonly byte[] s_littleEndianPreamble = new byte[4] { 0xFF, 0xFE, 0x00, 0x00 }; + private bool _emitUTF32ByteOrderMark = false; private bool _isThrowException = false; private bool _bigEndian = false; @@ -1177,6 +1180,10 @@ namespace System.Text return Array.Empty<byte>(); } + public override ReadOnlySpan<byte> Preamble => + GetType() != typeof(UTF32Encoding) ? GetPreamble() : // in case a derived UTF32Encoding overrode GetPreamble + _emitUTF32ByteOrderMark ? (_bigEndian ? s_bigEndianPreamble : s_littleEndianPreamble) : + Array.Empty<byte>(); public override bool Equals(Object value) { |