From db0eb5da5024d93dd976708c72fb93f7971e6f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Foidl?= Date: Wed, 5 Jun 2024 08:17:33 +0200 Subject: [PATCH] Fixed renting buffer from pool in INumberBase (#102755) --- .../src/System/Numerics/INumberBase.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/INumberBase.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/INumberBase.cs index eca30a3c3ea12..2f08b4e800016 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/INumberBase.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/INumberBase.cs @@ -306,7 +306,7 @@ static virtual TSelf Parse(ReadOnlySpan utf8Text, NumberStyles style, IFor scoped Span utf16Text; int textMaxCharCount = Encoding.UTF8.GetMaxCharCount(utf8Text.Length); - if (textMaxCharCount < 256) + if (textMaxCharCount <= 256) { utf16TextArray = null; utf16Text = stackalloc char[256]; @@ -314,7 +314,7 @@ static virtual TSelf Parse(ReadOnlySpan utf8Text, NumberStyles style, IFor else { utf16TextArray = ArrayPool.Shared.Rent(textMaxCharCount); - utf16Text = utf16TextArray.AsSpan(0, textMaxCharCount); + utf16Text = utf16TextArray; } OperationStatus utf8TextStatus = Utf8.ToUtf16(utf8Text, utf16Text, out _, out int utf16TextLength, replaceInvalidSequences: false); @@ -440,7 +440,7 @@ static virtual bool TryParse(ReadOnlySpan utf8Text, NumberStyles style, IF scoped Span utf16Text; int textMaxCharCount = Encoding.UTF8.GetMaxCharCount(utf8Text.Length); - if (textMaxCharCount < 256) + if (textMaxCharCount <= 256) { utf16TextArray = null; utf16Text = stackalloc char[256]; @@ -448,7 +448,7 @@ static virtual bool TryParse(ReadOnlySpan utf8Text, NumberStyles style, IF else { utf16TextArray = ArrayPool.Shared.Rent(textMaxCharCount); - utf16Text = utf16TextArray.AsSpan(0, textMaxCharCount); + utf16Text = utf16TextArray; } OperationStatus utf8TextStatus = Utf8.ToUtf16(utf8Text, utf16Text, out _, out int utf16TextLength, replaceInvalidSequences: false); @@ -486,7 +486,7 @@ bool IUtf8SpanFormattable.TryFormat(Span utf8Destination, out int bytesWri scoped Span utf16Destination; int destinationMaxCharCount = Encoding.UTF8.GetMaxCharCount(utf8Destination.Length); - if (destinationMaxCharCount < 256) + if (destinationMaxCharCount <= 256) { utf16DestinationArray = null; utf16Destination = stackalloc char[256]; @@ -494,7 +494,7 @@ bool IUtf8SpanFormattable.TryFormat(Span utf8Destination, out int bytesWri else { utf16DestinationArray = ArrayPool.Shared.Rent(destinationMaxCharCount); - utf16Destination = utf16DestinationArray.AsSpan(0, destinationMaxCharCount); + utf16Destination = utf16DestinationArray; } if (!TryFormat(utf16Destination, out int charsWritten, format, provider)) @@ -542,7 +542,7 @@ static TSelf IUtf8SpanParsable.Parse(ReadOnlySpan utf8Text, IFormat scoped Span utf16Text; int textMaxCharCount = Encoding.UTF8.GetMaxCharCount(utf8Text.Length); - if (textMaxCharCount < 256) + if (textMaxCharCount <= 256) { utf16TextArray = null; utf16Text = stackalloc char[256]; @@ -550,7 +550,7 @@ static TSelf IUtf8SpanParsable.Parse(ReadOnlySpan utf8Text, IFormat else { utf16TextArray = ArrayPool.Shared.Rent(textMaxCharCount); - utf16Text = utf16TextArray.AsSpan(0, textMaxCharCount); + utf16Text = utf16TextArray; } OperationStatus utf8TextStatus = Utf8.ToUtf16(utf8Text, utf16Text, out _, out int utf16TextLength, replaceInvalidSequences: false); @@ -589,7 +589,7 @@ static bool IUtf8SpanParsable.TryParse(ReadOnlySpan utf8Text, IForm scoped Span utf16Text; int textMaxCharCount = Encoding.UTF8.GetMaxCharCount(utf8Text.Length); - if (textMaxCharCount < 256) + if (textMaxCharCount <= 256) { utf16TextArray = null; utf16Text = stackalloc char[256]; @@ -597,7 +597,7 @@ static bool IUtf8SpanParsable.TryParse(ReadOnlySpan utf8Text, IForm else { utf16TextArray = ArrayPool.Shared.Rent(textMaxCharCount); - utf16Text = utf16TextArray.AsSpan(0, textMaxCharCount); + utf16Text = utf16TextArray; } OperationStatus utf8TextStatus = Utf8.ToUtf16(utf8Text, utf16Text, out _, out int utf16TextLength, replaceInvalidSequences: false);