On 04/28/2018 07:24 PM, Karl Williamson wrote: > On 04/28/2018 10:02 AM, Karl Williamson wrote: >> On 04/27/2018 10:24 PM, Karl Williamson wrote: >>> On 04/27/2018 09:56 PM, Carlos Guevara wrote: >>>> Revised radix.c: >>>> ##### >>>> #include <stdio.h> >>>> #include <locale.h> >>>> >>>> int >>>> main(int argc, char ** argv) >>>> { >>>> unsigned char buf[100]; >>>> unsigned int i; >>>> >>>> printf("%s\n", setlocale(LC_ALL, "ar_AE.UTF-8")); >>>> snprintf(buf, sizeof(buf), "%g", 3.2); >>>> >>>> for (i = 0; i < sizeof(buf); i++) { >>>> if (buf[i] == '\0') break; >>>> printf(" %x", buf[i]); >>>> } >>>> printf("\n"); >>>> } >>>> ##### >>>> >>>> Output: >>>> ##### >>>> ar_AE.UTF-8 >>>> 33 d9 32 >>>> ##### >>>> >>> >>> That should instead have been 33 d9 ab 32. >>> And that indicates that the problem is indeed with the OS. >>> My guess is that it doesn't consider the possibility of a multi-byte >>> radix character, so it uses just the first byte, but \xd9 is a start >>> byte of a two byte sequence, so this is leading to malformed UTF-8. >>> >>> I'll submit a trouble ticket for them. >>> >> >> Now done as https://www.illumos.org/issues/9511 >> > > > Attached are three patches that cause these tests to pass on solaris. > A version specification should probably be added to the one for > t/run/locale.t. But there are complications that I don't know how to > deal with. I don't know the version spec to use for openindiana which > I understand has a different kind of release deal. And I don't know > if this is a bug in the Oracle solaris, which has a very different > version number. > > I think these patches, after the versioning is ironed out, should go > in 5.28, so that this platform passes the test suite. These affect > only two .t files. I'd like one of the committers to approve this before it is merged to blead. Dave, Tony, Yves, Zefram, etc.?Thread Previous | Thread Next