Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release/9.0-staging][iOS][globalization] Fix IndexOf on empty strings on iOS to return -1 #112012

Open
wants to merge 2 commits into
base: release/9.0-staging
Choose a base branch
from

Conversation

matouskozak
Copy link
Member

@matouskozak matouskozak commented Jan 30, 2025

Manual backport of #111898.

Fix incorrect return condition for iOS IndexOf implementation and add test case for IndexOf("", <something>) and "".Contains(<something>). Clean-up of some styling issues and adding comments.

Customer Impact

  • Customer reported
  • Found internally

Customers using CompareInfo.IndexOf or string.Contains APIs on empty source strings involving ICU logic are returning a result 0 (indicates found at index 0) instead of -1 (indicates not found).

Some of the issues reported by customers:

Regression

  • Yes
  • No

The regression was introduced in #86895 and initially limited to when hybrid globalization is enabled. However, in .NET 9, we switched fully to Apple native globalization APIs (initially also referred to as hybrid globalization), thus spreading this issue to all iOS Globalization code using the IndexOf API.

Testing

Previously there were no test cases for this code path. This PR adds test scenarios for both CompareInfo.IndexOf or string.Contains.

Risk

Low

This change is correcting previously incorrect behavior. It is unlikely that .NET 9 iOS customers are depending on this new behavior as it is fundamentally incorrect as per .net doc.

Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-globalization
See info in area-owners.md if you want to be subscribed.

@tarekgh tarekgh added the Servicing-consider Issue for next servicing release review label Jan 30, 2025
@tarekgh tarekgh added this to the 9.0.3 milestone Jan 30, 2025
@matouskozak
Copy link
Member Author

/azp run runtime-extra-platforms

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-System.Globalization os-ios Apple iOS Servicing-consider Issue for next servicing release review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants