提交 6b4c7251 编写于 作者: M Marek Safar

Make EncodedStringText fallback encoding lazy instead of eagerly initialized in static ctor

上级 91327c17
......@@ -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<Encoding>(getEncoding), readEncodingOpt, algorithm);
}
}
......
......@@ -24,7 +24,7 @@ internal static class EncodedStringText
/// 2. CodePage 1252.
/// 3. Latin1.
/// </summary>
private static readonly Encoding s_fallbackEncoding = GetFallbackEncoding();
private static readonly Lazy<Encoding> s_fallbackEncoding = new Lazy<Encoding>(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<Encoding> getEncoding,
internal static SourceText Create(Stream stream, Lazy<Encoding> 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)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册