Skip to content

Flip IL offset check - #62049

Merged
jakobbotsch merged 1 commit into
dotnet:mainfrom
jakobbotsch:flip-il-offset-check
Nov 27, 2021
Merged

Flip IL offset check#62049
jakobbotsch merged 1 commit into
dotnet:mainfrom
jakobbotsch:flip-il-offset-check

Conversation

@jakobbotsch

Copy link
Copy Markdown
Member

Just a small fix for dotnet-pgo's dump/compare commands. cc @dotnet/jit-contrib

@ghostghost added the area-ReadyToRun label Nov 25, 2021
@jakobbotsch
jakobbotsch merged commit 12a8819 into dotnet:mainNov 27, 2021
@jakobbotsch
jakobbotsch deleted the flip-il-offset-check branch November 27, 2021 19:37
@ghostghost locked as resolved and limited conversation to collaborators Dec 28, 2021
rhirano0715 added a commit to rhirano0715/dotnet_runtime that referenced this pull request Mar 9, 2024
If EnsureStorage() is called unconditionally, the array will be expanded, so the position will never become negative. When the conditions inside EnsureStorage() are true, it might be necessary to expand the array, regardless of the comparison between newpos and codepos.
https://github.com/dotnet/runtime/blob/6ebc8bd86dbc780b2a2a7daf3ab6020f9104f09e/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/Regex.MultipleMatches.Tests.cs#L461-L469
Before the change, in this test case, EnsureStorage() is not called because newpos == codepos == 6 from the first time until an exception occurs.
Fixdotnet#62049
stephentoub pushed a commit that referenced this pull request Apr 13, 2024
* Prevent IndexOutOfRangeException in RegexInterpreter
This update fixes the IndexOutOfRangeException in RegexInterpreter by enhancing the `TrackPush` and `TrackPush2` methods. The adjustment involves checking the runtrack position before decrementing it, ensuring that it doesn't become negative, which was the root cause of the exception. This prevents potential out-of-range errors when handling large numbers of repetitions in regular expressions.
Fix#62094
* Changed to call EnsureStorage() unconditionally.
If EnsureStorage() is called unconditionally, the array will be expanded, so the position will never become negative. When the conditions inside EnsureStorage() are true, it might be necessary to expand the array, regardless of the comparison between newpos and codepos.
https://github.com/dotnet/runtime/blob/6ebc8bd86dbc780b2a2a7daf3ab6020f9104f09e/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/Regex.MultipleMatches.Tests.cs#L461-L469
Before the change, in this test case, EnsureStorage() is not called because newpos == codepos == 6 from the first time until an exception occurs.
Fix#62049
matouskozak pushed a commit to matouskozak/runtime that referenced this pull request Apr 30, 2024
* Prevent IndexOutOfRangeException in RegexInterpreter
This update fixes the IndexOutOfRangeException in RegexInterpreter by enhancing the `TrackPush` and `TrackPush2` methods. The adjustment involves checking the runtrack position before decrementing it, ensuring that it doesn't become negative, which was the root cause of the exception. This prevents potential out-of-range errors when handling large numbers of repetitions in regular expressions.
Fixdotnet#62094
* Changed to call EnsureStorage() unconditionally.
If EnsureStorage() is called unconditionally, the array will be expanded, so the position will never become negative. When the conditions inside EnsureStorage() are true, it might be necessary to expand the array, regardless of the comparison between newpos and codepos.
https://github.com/dotnet/runtime/blob/6ebc8bd86dbc780b2a2a7daf3ab6020f9104f09e/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/Regex.MultipleMatches.Tests.cs#L461-L469
Before the change, in this test case, EnsureStorage() is not called because newpos == codepos == 6 from the first time until an exception occurs.
Fixdotnet#62049
Ruihan-Yin pushed a commit to Ruihan-Yin/runtime that referenced this pull request May 30, 2024
* Prevent IndexOutOfRangeException in RegexInterpreter
This update fixes the IndexOutOfRangeException in RegexInterpreter by enhancing the `TrackPush` and `TrackPush2` methods. The adjustment involves checking the runtrack position before decrementing it, ensuring that it doesn't become negative, which was the root cause of the exception. This prevents potential out-of-range errors when handling large numbers of repetitions in regular expressions.
Fixdotnet#62094
* Changed to call EnsureStorage() unconditionally.
If EnsureStorage() is called unconditionally, the array will be expanded, so the position will never become negative. When the conditions inside EnsureStorage() are true, it might be necessary to expand the array, regardless of the comparison between newpos and codepos.
https://github.com/dotnet/runtime/blob/6ebc8bd86dbc780b2a2a7daf3ab6020f9104f09e/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/Regex.MultipleMatches.Tests.cs#L461-L469
Before the change, in this test case, EnsureStorage() is not called because newpos == codepos == 6 from the first time until an exception occurs.
Fixdotnet#62049
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jakobbotsch@jkotas