From e11d458239c11258b099326aabcf6276b5f2ebe8 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Thu, 13 Aug 2026 07:25:17 -0700 Subject: [PATCH 1/2] Reset charsConsumed when BigInteger partial parsing fails Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../System.Runtime.Numerics/src/System/Number.BigInteger.cs | 5 +++++ .../System.Runtime.Numerics/tests/BigInteger/parse.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs b/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs index 2c7b1c11539519..6cff3f3844aec3 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Number.BigInteger.cs @@ -132,6 +132,11 @@ internal static unsafe ParsingStatus TryParseBigIntegerNumber(ReadOnlySpa else { ret = NumberToBigInteger(ref number, out result); + + if (ret != ParsingStatus.OK) + { + elementsConsumed = 0; + } } } diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs index ceddb5ea929e22..0b1f8f6915f549 100644 --- a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs @@ -1482,6 +1482,11 @@ public static IEnumerable TryParsePartial_Invalid_TestData() // Only invalid characters (no valid number) yield return new object[] { "abc", NumberStyles.Integer, null }; yield return new object[] { "xyz", NumberStyles.Integer, null }; + + // Values that scan successfully but aren't representable as a BigInteger + yield return new object[] { "1.5", NumberStyles.Float, null }; + yield return new object[] { "3.14159abc", NumberStyles.Float, null }; + yield return new object[] { "1E1000000000", NumberStyles.Float, null }; } [Theory] From c8f95db8e98386b8d003ea4879006918fc4b55ce Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Thu, 13 Aug 2026 07:37:34 -0700 Subject: [PATCH 2/2] Make BigInteger partial parse tests culture-invariant Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../System.Runtime.Numerics/tests/BigInteger/parse.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs index 0b1f8f6915f549..3a838fd66fd148 100644 --- a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs @@ -1484,9 +1484,9 @@ public static IEnumerable TryParsePartial_Invalid_TestData() yield return new object[] { "xyz", NumberStyles.Integer, null }; // Values that scan successfully but aren't representable as a BigInteger - yield return new object[] { "1.5", NumberStyles.Float, null }; - yield return new object[] { "3.14159abc", NumberStyles.Float, null }; - yield return new object[] { "1E1000000000", NumberStyles.Float, null }; + yield return new object[] { "1.5", NumberStyles.Float, CultureInfo.InvariantCulture }; + yield return new object[] { "3.14159abc", NumberStyles.Float, CultureInfo.InvariantCulture }; + yield return new object[] { "1E1000000000", NumberStyles.Float, CultureInfo.InvariantCulture }; } [Theory]