diff --git a/src/Compilers/Core/CodeAnalysisTest/Text/StringTextDecodingTests.cs b/src/Compilers/Core/CodeAnalysisTest/Text/StringTextDecodingTests.cs index c4a56bd49b9277171cb8d8d605e855b21888dd27..91b90dbb69cfe3a16c2f3a5f2f1e0813fb9c8492 100644 --- a/src/Compilers/Core/CodeAnalysisTest/Text/StringTextDecodingTests.cs +++ b/src/Compilers/Core/CodeAnalysisTest/Text/StringTextDecodingTests.cs @@ -44,7 +44,7 @@ private static SourceText CreateMemoryStreamBasedEncodedText(byte[] bytes, Encod using (var stream = new MemoryStream(buffer, 0, bytes.Length, writable: true, publiclyVisible: true)) { - return EncodedStringText.Create(stream, getEncoding, readEncodingOpt, algorithm); + return EncodedStringText.Create(stream, new Lazy(getEncoding), readEncodingOpt, algorithm); } } diff --git a/src/Compilers/Core/Portable/EncodedStringText.cs b/src/Compilers/Core/Portable/EncodedStringText.cs index 70385c0173e2e95eab49dfb7ecd8ee802965437f..36dbb83059cb91e28c53106f1809cde694c1b885 100644 --- a/src/Compilers/Core/Portable/EncodedStringText.cs +++ b/src/Compilers/Core/Portable/EncodedStringText.cs @@ -24,7 +24,7 @@ internal static class EncodedStringText /// 2. CodePage 1252. /// 3. Latin1. /// - private static readonly Encoding s_fallbackEncoding = GetFallbackEncoding(); + private static readonly Lazy s_fallbackEncoding = new Lazy(GetFallbackEncoding); private static Encoding GetFallbackEncoding() { @@ -72,13 +72,13 @@ private static Encoding GetFallbackEncoding() SourceHashAlgorithm checksumAlgorithm = SourceHashAlgorithm.Sha1) { return Create(stream, - () => s_fallbackEncoding, + s_fallbackEncoding, defaultEncoding: defaultEncoding, checksumAlgorithm: checksumAlgorithm); } // internal for testing - internal static SourceText Create(Stream stream, Func getEncoding, + internal static SourceText Create(Stream stream, Lazy getEncoding, Encoding defaultEncoding = null, SourceHashAlgorithm checksumAlgorithm = SourceHashAlgorithm.Sha1) { @@ -100,7 +100,7 @@ private static Encoding GetFallbackEncoding() try { - return Decode(stream, defaultEncoding ?? getEncoding(), checksumAlgorithm, throwIfBinaryDetected: detectEncoding); + return Decode(stream, defaultEncoding ?? getEncoding.Value, checksumAlgorithm, throwIfBinaryDetected: detectEncoding); } catch (DecoderFallbackException e) {