Skip to content

Fix BigInteger bitwise operators on certain negative numbers - #109684

Merged
tannergooding merged 2 commits into
dotnet:mainfrom
Rob-Hague:bigintops
Nov 13, 2024
Merged

Fix BigInteger bitwise operators on certain negative numbers#109684
tannergooding merged 2 commits into
dotnet:mainfrom
Rob-Hague:bigintops

Conversation

@Rob-Hague

Copy link
Copy Markdown
Contributor

@dotnet-policy-servicedotnet-policy-serviceBot added the community-contribution Indicates that the PR has been added by a community member label Nov 10, 2024
@Rob-Hague

Copy link
Copy Markdown
ContributorAuthor

An alternative or follow-up could be to remove this constructor and replace the 3 uses with calls to the public ROS<byte> constructor, e.g.

diff --git a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs
index b3355ff6867..4a0d53e6be2 100644
--- a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs+++ b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs@@ -2476,7 +2476,7 @@ private static BigInteger Subtract(ReadOnlySpan<uint> leftBits, int leftSign, Re
if (rightBufferFromPool != null)
ArrayPool<uint>.Shared.Return(rightBufferFromPool);
- var result = new BigInteger(z);+ var result = new BigInteger(MemoryMarshal.AsBytes(z));
if (resultBufferFromPool != null)
ArrayPool<uint>.Shared.Return(resultBufferFromPool);

@huoyaoyuan

Copy link
Copy Markdown
Member

Duplicate of#105456

@tannergooding

Copy link
Copy Markdown
Member

Merged #105456

Will still take this PR for the explicit regression test and typo fix.

@jeffhandley

Copy link
Copy Markdown
Member

@tannergooding Once this is merged, do you want to cherry-pick it into #109732 for the backport too so we take this new test with the fix?

@tannergooding

Copy link
Copy Markdown
Member

Can do.

@tannergooding
tannergooding merged commit d3d0fce into dotnet:mainNov 13, 2024
tannergooding added a commit that referenced this pull request Nov 13, 2024
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
@Rob-Hague
Rob-Hague deleted the bigintops branch November 13, 2024 17:36
jeffhandley pushed a commit that referenced this pull request Nov 25, 2024
* Add a missing =
* Add some tests for bigint AND.
* Add some tests for bigint AND.
* Update src/libraries/System.Runtime.Numerics/tests/BigInteger/SampleGeneration.cs
Co-authored-by: Dan Moseley <danmose@microsoft.com>
* Fix BigInteger bitwise operators on certain negative numbers (#109684)
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
---------
Co-authored-by: LEI Hongfaan <lihangfan@hotmail.com>
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
mikelle-rogers pushed a commit to mikelle-rogers/runtime that referenced this pull request Dec 10, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Dec 14, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Numericscommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BigInteger correctness regression from .NET 8

4 participants

@Rob-Hague@huoyaoyuan@tannergooding@jeffhandley