[DragonFlyBSD - Bug #3284] Wrong towlower() result for U+038A

bugtracker-admin at leaf.dragonflybsd.org bugtracker-admin at leaf.dragonflybsd.org
Tue Jun 15 11:15:29 PDT 2021


Issue #3284 has been updated by swildner.


An upgrade of our locale data to newer CLDR data will fix this issue. Your sample program gives the expected output here locally.

It will take me a bit to clean up what I have. Stay tuned.


----------------------------------------
Bug #3284: Wrong towlower() result for U+038A
http://bugs.dragonflybsd.org/issues/3284#change-14105

* Author: bhaible
* Status: New
* Priority: Normal
* Assignee: 
* Category: Userland
* Target version: 
----------------------------------------
How to reproduce: Run this program.
Expected output:
<pre>
wc1 uppercased = 0x038A, wc2 uppercased = 0x038A
wc1 lowercased = 0x03AF, wc2 lowercased = 0x03AF
</pre>
Actual output:
<pre>
wc1 uppercased = 0x038A, wc2 uppercased = 0x038A
wc1 lowercased = 0x03AF, wc2 lowercased = 0x03B0
</pre>

<pre>
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>

int main ()
{
  if (setlocale (LC_ALL, "fr_FR.UTF-8") == NULL)
    return 1;
  wchar_t wc1 = 0x03AF; /* GREEK SMALL LETTER IOTA WITH TONOS */
  wchar_t wc2 = 0x038A; /* GREEK CAPITAL LETTER IOTA WITH TONOS */
  printf ("wc1 uppercased = 0x%04X, wc2 uppercased = 0x%04X\n", towupper (wc1), towupper (wc2));
  if (towupper (wc1) != towupper (wc2))
    return 2;
  printf ("wc1 lowercased = 0x%04X, wc2 lowercased = 0x%04X\n", towlower (wc1), towlower (wc2));
  if (towlower (wc1) != towlower (wc2))
    return 3;
}
</pre>




-- 
You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account


More information about the Bugs mailing list