From owner-freebsd-bugs@freebsd.org Fri May 20 16:48:13 2016 Return-Path: Delivered-To: freebsd-bugs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DFE20B43087 for ; Fri, 20 May 2016 16:48:13 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D09D61177 for ; Fri, 20 May 2016 16:48:13 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id u4KGmDg4042181 for ; Fri, 20 May 2016 16:48:13 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 209617] wctomb() is completely broken when UTF-8 locales are used Date: Fri, 20 May 2016 16:48:14 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bin X-Bugzilla-Version: 10.3-RELEASE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: jau@iki.fi X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 May 2016 16:48:14 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D209617 --- Comment #2 from jau@iki.fi --- Right, it was not wctomb() at all that was in fault. The reason for the misbehavior was... loc =3D newlocale (LC_CTYPE_MASK, "fi_FI.UTF-8", LC_GLOBAL_LOCALE); Other xlocale manual pages mention LC_GLOBAL_LOCALE pretty much as a generic handle to the process default locale. The man page for newlocale() doesn't explain the base locale at all. Neither LC_GLOBAL_LOCALE nor NULL as the base are explained. It is simply left to depend on the best guess of the programmer. It seems that the following modified call works just fine and also wctomb() after this change... loc =3D newlocale (LC_CTYPE_MASK, "fi_FI.UTF-8", NULL); First of all the meaning of NULL and LC_GLOBAL_LOCALE should be documented. Secondly I assume that NULL is taken as a reference to the current thread locale, whatever it is, not as the global locale, unless the current thread locale happens to be the global locale. In such a case it would seem reasonable to really accept LC_GLOBAL_LOCALE as exactly what one would expect, the process' global locale independent of what the current thread locale is. The current setup is so confusing that I cannot be the only one getting in trouble with this. --=20 You are receiving this mail because: You are the assignee for the bug.=