|
Message-ID: <20201101204002.GA1370092@port70.net> Date: Sun, 1 Nov 2020 21:40:02 +0100 From: Szabolcs Nagy <nsz@...t70.net> To: Érico Nogueira <ericonr@...root.org> Cc: musl@...ts.openwall.com, Alexander Vitiuk <suda@....net> Subject: Re: swprintf possible bug * Érico Nogueira <ericonr@...root.org> [2020-11-01 17:17:49 -0300]: > On Sun Nov 1, 2020 at 6:06 PM -03, Alexander Vitiuk wrote: > > It seems, wsprintf() / wprintf() are not working in musl as expected, if > > uses with cyrillic: > > > > C testcase: > > #include <wchar.h> > > int main() { > > wprintf(L"[hello]\n"); > > wprintf(L"[Привет]\n"); > > return 0; > > } > > on x86_64-linux-gnu prints: > > [hello] > > [Privet] > > and on x86_64-linux-musl prints: [hello] > > [ > > > > There are other cases described: > > https://github.com/emscripten-core/emscripten/issues/11947 > > For what it's worth, if this is a bug, it would seem to be in how musl > decides when to print characters (not the formatting functions > themselves), since the below program doesn't print anything: > > #include <wchar.h> > #include <stdio.h> > > int main() { > fputws(L"[Привет Василий]\n", stdout); > // I don't know if I'm accessing a wchar_t appropriately here > fputwc(L"[Привет Василий]\n"[3], stdout); > return 0; > } > > I tried tracing the execution from fputws, and not printing anything > seems to be caused by the return value of wcsrtombs(). these functions return an error code.. in this case they must return -1 and set errno to EILSEQ, since the selected multibyte encoding (LC_CTYPE=C) cannot represent the printed wide characters. i think the musl behaviour is correct, you can try adding setlocale(LC_CTYPE,"") at the start of main to make it work.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.