mailing list of musl libc
 help / color / mirror / code / Atom feed
* [musl] swprintf %lc directive does not work for some wide characters
@ 2023-06-12 14:44 Bruno Haible
  2023-06-12 20:27 ` Rich Felker
  0 siblings, 1 reply; 4+ messages in thread
From: Bruno Haible @ 2023-06-12 14:44 UTC (permalink / raw)
  To: musl

According to ISO C 11 § 7.29.2.1, in the *wprintf family of functions, the
%lc directive works like this:
  "[If an l length modifier is present,] the wint_t argument is converted to
   wchar_t and written."

Likewise in ISO C 17 § 7.29.2 and ISO C 23 § 7.31.2.1 and in POSIX:2018
<https://pubs.opengroup.org/onlinepubs/9699919799/functions/fwprintf.html>.

In musl libc 1.2.4 (as part of Alpine Linux 3.18.0) this does not work for
some characters.

How to reproduce:
=================================== foo.c ===================================
#include <stdio.h>
#include <wchar.h>
int main ()
{
  static wint_t L_invalid = (wchar_t) 0x76543210;
  wchar_t buf[3];
  int ret = swprintf (buf, 3, L"%lc", L_invalid);
  if (ret >= 0)
    fprintf (stderr, "OK, %d characters\n", ret);
  else
    perror ("swprintf failed");
}
=============================================================================
$ gcc -Wall foo.c
$ ./a.out

Expected output:
OK, 1 characters

Actual output:
swprintf failed: Illegal byte sequence




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-06-12 21:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-12 14:44 [musl] swprintf %lc directive does not work for some wide characters Bruno Haible
2023-06-12 20:27 ` Rich Felker
2023-06-12 20:53   ` Bruno Haible
2023-06-12 21:28     ` Rich Felker

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).