[Patch] iosxwstr WideCompareStr failure
## Summary `WideCompareStr` with `iosxwstr` returns unexpected results - tests fail ## System Information - **Operating system:** macOS Ventura 13.6.1 - **Processor architecture:** x86-64 - **Compiler version:** trunk ## Steps to reproduce On macOS, run fpc tests. [tunistr7.pp](tests/test/tunistr7.pp) and [twide7.pp](tests/test/twide7.pp) will fail with exit code 2. ## What is the current bug behavior? `WideCompareStr("afcde", "aécde")` returns -1. The tests expect it to be positive, like on other platforms (verified on linux x86_64). ## What is the expected (correct) behavior? `WideCompareStr("afcde", "aécde")` returns 1. ## Relevant logs and/or screenshots The following Objective C output shows that a normal `NSString :compare` actually equals to calling `CFCompareString` with `kCFCompareNonliteral` and that the explicit option `NSLiteralSearch` equals to calling `CFCompareString` with 0: ```objective_c // // main.m // TestCFStringCompare // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString* w1 = @"afcde"; NSString* w2 = @"aécde"; NSComparisonResult cr = [w1 compare:w2]; NSLog(@"NSString compare: result is %ld", (long)cr); cr = [w1 compare:w2 options:NSLiteralSearch]; NSLog(@"NSString compare: with NSLiteralSearch result is %ld", (long)cr); CFStringRef cfw1 = (__bridge CFStringRef)w1; CFStringRef cfw2 = (__bridge CFStringRef)w2; NSLog(@"CFStringCompare result is %ld", (long)CFStringCompare(cfw1, cfw2, 0l)); NSLog(@"CFStringCompare Nonliteral result is %ld", (long)CFStringCompare(cfw1, cfw2, kCFCompareNonliteral)); } return 0; } ``` outputs ``` 2023-11-08 13:06:28.680697+0100 TestCFStringCompare[56288:2328514] NSString compare: result is 1 2023-11-08 13:06:28.681317+0100 TestCFStringCompare[56288:2328514] NSString compare: with NSLiteralSearch result is -1 2023-11-08 13:06:28.681601+0100 TestCFStringCompare[56288:2328514] CFStringCompare result is -1 2023-11-08 13:06:28.681662+0100 TestCFStringCompare[56288:2328514] CFStringCompare Nonliteral result is 1 Program ended with exit code: 0 ``` ## Possible fixes CFCompareString should be called with kCFCompareNonliteral. See [iosxwstr.patch](/uploads/e011c4334db284b4bba2e772a0dd2b8e/iosxwstr.patch)
issue