| Message ID | 93dc6225-0cd9-4ce0-b042-3ab88249fb7f@towo.net |
|---|---|
| State | New |
| Headers |
Return-Path: <newlib-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7B9B24BA2E2E for <patchwork@sourceware.org>; Fri, 29 May 2026 04:58:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7B9B24BA2E2E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=towo.net header.i=towo@towo.net header.a=rsa-sha256 header.s=s1-ionos header.b=TDtcMgzM X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.187]) by sourceware.org (Postfix) with ESMTPS id 9BEB04BA2E15 for <newlib@sourceware.org>; Fri, 29 May 2026 04:58:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9BEB04BA2E15 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=towo.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=towo.net ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9BEB04BA2E15 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=212.227.126.187 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780030690; cv=none; b=JlWuiu8Nm4pdrXdqDRUbcXgqqu/5QkWmBvR2HjfIegqbajiHoPWA9GvqrkMYIEK7F/3Z5yaCGJyguc64SIdRixqIaOpLrW8Lw2iCeqZ84rXgdxAtievCIb1pRZjAUq0RtOK9sk97ujYeeS7cAFseirKTtrKINU2Y+tsI89wdNqg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780030690; c=relaxed/simple; bh=V6wju+pmbnaHUZU7PGL8pjLJ+j4h1tZSmgNSZYbloho=; h=DKIM-Signature:Message-ID:Date:MIME-Version:From:To:Subject; b=SrDJXLO5FhXMn+vsKlP6IVCir3eSEpfzNmT3RZRnG/mXtRoikzQvWXVZry8ICGyOMPqpib6v6UJS+jbUOnp4lkbUZcFAFjV/fAH5A94ZtoPMyIwnV0OVuAgu5qJn+MJHr565LJQt/6GQoPHtuy1R4Ys9D0tFn35zIVP4wSXxlEQ= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=towo.net header.i=towo@towo.net header.a=rsa-sha256 header.s=s1-ionos header.b=TDtcMgzM DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9BEB04BA2E15 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=towo.net; s=s1-ionos; t=1780030688; x=1780635488; i=towo@towo.net; bh=V6wju+pmbnaHUZU7PGL8pjLJ+j4h1tZSmgNSZYbloho=; h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:From: To:Subject:cc:content-transfer-encoding:content-type:date:from: message-id:mime-version:reply-to:subject:to; b=TDtcMgzMxjGoxlp9m5+LcUBloDCHZF4DjJUmtfjFULAcoaqtpXM6nvgbUOqgO3UZ BcOivQUAtsbjp27rpR32KsG++MSfU1lTe7sqvVK7W7zVwCvC/gqnlN/tKjMKu8oy8 13ufYUC+Cz4+35uB641tYWqmMLLN8MiJW+Z09X9d6fAhETqmU4+49uXDO4YGDitk1 6PyJIdxA7N0mdlIXjSe7bd2SFBRZYIZsqQ0Z4rIb0XKTbwWGxHoj5K9VFAFxE3c4C ySOnINfNbZ5DFKoKLuFkQAL2n1hKG7fvhqA74Qmo0dGJEGL1zuOlXOr5/wWGtuuBf aTMEr+DSvx5ov5Ex0A== X-UI-Sender-Class: 55c96926-9e95-11ee-ae09-1f7a4046a0f6 Received: from client.hidden.invalid by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MkW10-1xAQyU176c-00jSZg for <newlib@sourceware.org>; Fri, 29 May 2026 06:58:08 +0200 Content-Type: multipart/mixed; boundary="------------RaBBwOk8AzekEFI4aN2rFphV" Message-ID: <93dc6225-0cd9-4ce0-b042-3ab88249fb7f@towo.net> Date: Fri, 29 May 2026 06:58:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Thomas Wolff <towo@towo.net> To: newlib@sourceware.org Subject: [PATCH] wchar.h: tweak wcwidth prototype parameter wchar_t -> wint_t Autocrypt: addr=towo@towo.net; keydata= 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 kQ== X-Provags-ID: V03:K1:yomMPI+Bt8CZBXj3PxWhh0xO1XpdoQmjrXr+VEXwTeXYAGLs00N B4dXCeSjnKhu+vHXxCMAF8H43fWppV9Ec4PQYtcS5e6UdHGtzMzZLWWs/IxcUkWjnMrKM0m K4y4ZPrqfxv7OY3I40jnvPMcLbzngQlkeNtF/Tf8ha8kOmTy8CGEh0NwmdWh34P/EJ5ogye G8lp2kQpyOTQu4Vy8wc8A== UI-OutboundReport: notjunk:1;M01:P0:iQRY9EXPFDg=;9oXJ3W5kMH5LtACxNoL+IHKZ0fc Tp66iIoZGgi7OrxZJn87QGHganBGiPHGsLAkTdJezSxZeoovnpGsMmUsgCdHB+yuIBxDx39OD g08k8qcjDo0sSnNDKUVAWOlTM0at2QNq7rIx5+G4Fa0kSCe3XqYEIuyCwiI1LKUHQmTe2gA2M vWgX7cURf1qX14psJ2Px4RFVO4Q0qi20PVz4NWfgyHa8O40nOK4Y4zzdeGInog/HcWvc08lzx wbRMEf3xQxTdP087OYZ36PYxQVb6+O4GOY305QRYV0mWbM9uTE9x+tsV6w4wfNd2cnF3Y7n4Q G7zv1OoVxJSEeboBI7E9U1bqtvGI3LvfR7l7XwcqUivjdwkearyHxeno46D6tPE34R0LKMx6/ DTz1MMeRxmT+DYwy1ozkIrsZfIE90fu+OME0xNtE4xCDiUv8WTSdCu87GQTISxvdHU1wRH0w4 b8BhWDQ2NA7+eiLN90mhk9R/S5cFF1pXLlAIn8SYLL/+NNduy1kH6TydnlOnoLnt9WD6ftlpx dj4Qt8giKE9n1WSQ4yTNT2a6yTBzP9EUTVz1HYLOfme1e3Qazrarj2EIqRSjxLLNMPXlqFaLk /lzGMeaF706+TKI9sboj4ulgUENY0oxCz02PzuNiieXxbOvJvmthUEVXDVWseDRRJdU3/oBzB GpAu8zhRDsYScM67jhn5Df2Bc5bO3HL2kvmtJGlDq/LLPQmAopK4/VcCdcvD9AYigdnMI2m6x anXMixhaI5PzqFIa2peKSPHkU/sIkhqOq4yGudYwu+m2elKU0BOncqS7eov4N+VdmBFOI+vU6 8X9Qa3Zoty5GFHfOOwrZ/renln7W+Q3uur/tKiwSPTmSS8FvNv+O/u8iygvPieT8McJhMNnAH swPPtxk5A6bSpaU0jRXTs6zuSb8RWxH2F/pniHD1ozUKx2EqhqwsE0cPjtKgwsfzrSwhb88up JiATTnJkJKv7ApmkENiM8tgiKt93Z0JopDF+SufYA227G8z7BVD+kpyi5VGpsvhTh9Dpn+nZJ LxQQVW5M/zRz7FnH1Fyr53Y3P1jPkr1uBd7Gt6BXxqg6p73/6N4+qItHXSq413eRr+YpK7Q+g FJRXwbHBxfIzNHTBvbqnJmnwyzP+FanbhdK5lpPirvAkVjRT10weASyY7vviirpHPnRlV/dmc C2zZwhZV+VygtZKukjPr+8mb18pug01XzGqt9W6paMLm9Rp3PJmVmgOtZkCs7QIjG4g3bTX5G s30eoiaJkTDfd8aXpY2AdR7XHPiS4sQV+rHuP2pQmqFDb2zWJL8ev2svHbi7mLF9sK4aoSFvJ lVuTy9Z0fTOfNzH6OGuHLQdofnhlPPd3xUB3Ha1gUYqfElkQBARe13Ai1G92P2gP1VchvbaDS GGS2dxM/8k+2YHw4dNMVdo4gQOe+RiZakshz3NtRPgABoaz966Dm2+MF/Qqj6y+TxQNvZQPWO 2BJd0hlUNsPeZfUseLLOfjjQISplnHaSLlVASP5VHdcWOHYCB9QPXbGJNbEL6wU+ixtBlAdId eBJiL7OeMQZUYNn6JrEHKtBhoJ+SFHM4C0kgg+jU88Ypt6VYkE+b/fBDccUhgrTopDo9TXSZm bhtrF49hC9SmUgbyxBwf35iGeXX0y7g2xt8Ber6+I9Lg+epV6rv++Z4i0tzDeZdzZUg0axiaL mE/21LIa4r8riS4kN6Mht0FDlJj1bTYatuQJIY3YTvQaeFrVLcwma1QUP43xusgNtl3UqR4En jYTNuMJFuYNcAfwwWwIKYOkypfFQCSj3Px/NGphtUozrpB4FhaCa6CDfTWRD0NooLP0oAo029 r11YqV26vZmtAhkG1Hc97P7Cm2iWcEI0ywUQV2XlawKniZuE5bx3UXsU/HququZX60yn3taUg XmvBoJ831FleIahelRKZoamnOXgstTcCMPH0RjRnKSve0p5QfYBYISSvHG3 X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Newlib mailing list <newlib.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/newlib>, <mailto:newlib-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/newlib/> List-Post: <mailto:newlib@sourceware.org> List-Help: <mailto:newlib-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/newlib>, <mailto:newlib-request@sourceware.org?subject=subscribe> Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org |
| Series |
wchar.h: tweak wcwidth prototype parameter wchar_t -> wint_t
|
|
Commit Message
Thomas Wolff
May 29, 2026, 4:58 a.m. UTC
to make it compliant with newlib and the manual page;
fixes cases of wrong width calculation:
https://cygwin.com/pipermail/cygwin/2026-April/259597.html
as mentioned in
https://cygwin.com/pipermail/cygwin/2026-May/259734.html
as described in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125451#c14
From 29783bf893ea867282f591fd97feb5ecffd661be Mon Sep 17 00:00:00 2001
From: Thomas Wolff <towo@towo.net>
Date: Fri, 29 May 2026 00:00:00 +0000
Subject: [PATCH] wchar.h: tweak wcwidth prototype parameter wchar_t -> wint_t
to make it compliant with newlib and the manual page;
fixes cases of wrong width calculation:
https://cygwin.com/pipermail/cygwin/2026-April/259597.html
as mentioned in
https://cygwin.com/pipermail/cygwin/2026-May/259734.html
as described in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125451#c14
---
newlib/libc/include/wchar.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 2026-05-28 22:58, Thomas Wolff wrote: > to make it compliant with newlib and the manual page; > fixes cases of wrong width calculation: > https://cygwin.com/pipermail/cygwin/2026-April/259597.html > as mentioned in > https://cygwin.com/pipermail/cygwin/2026-May/259734.html > as described in > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125451#c14 > attachment: 0001-wchar.h-tweak-wcwidth-prototype-parameter-wchar_t-wi.patch The existing wcwidth declaration in newlib/libc/include/wchar.h agrees with POSIX 8 SUS V5. It is the man doc, definition, and implementation in newlib/libc/string/wcwidth.c which need changed to match the specification and return codes in: https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcwidth.html
Hi Brian, Am 31.05.2026 um 05:50 schrieb Brian Inglis via Cygwin: > On 2026-05-28 22:58, Thomas Wolff wrote: >> to make it compliant with newlib and the manual page; >> fixes cases of wrong width calculation: >> https://cygwin.com/pipermail/cygwin/2026-April/259597.html >> as mentioned in >> https://cygwin.com/pipermail/cygwin/2026-May/259734.html >> as described in >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125451#c14 > > attachment: > 0001-wchar.h-tweak-wcwidth-prototype-parameter-wchar_t-wi.patch > > The existing wcwidth declaration in newlib/libc/include/wchar.h agrees > with > POSIX 8 SUS V5. > > It is the man doc, definition, and implementation in > newlib/libc/string/wcwidth.c which need changed to match the > specification and return codes in: > > https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcwidth.html Your argument overlooks one significant deviation: in POSIX, wchar_t has 32 bits, in cygwin only 16. So to make wcwidth work for *all* Unicode character code points, the 32 bit version must be used. I tested positively that this fixes the broken test case with gcc 16 I had reported to the cygwin list.
Hi Thomas, On Sun, 31 May 2026 10:06:12 +0200 Thomas Wolff wrote: > Hi Brian, > > Am 31.05.2026 um 05:50 schrieb Brian Inglis via Cygwin: > > On 2026-05-28 22:58, Thomas Wolff wrote: > >> to make it compliant with newlib and the manual page; > >> fixes cases of wrong width calculation: > >> https://cygwin.com/pipermail/cygwin/2026-April/259597.html > >> as mentioned in > >> https://cygwin.com/pipermail/cygwin/2026-May/259734.html > >> as described in > >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125451#c14 > > > attachment: > > 0001-wchar.h-tweak-wcwidth-prototype-parameter-wchar_t-wi.patch > > > > The existing wcwidth declaration in newlib/libc/include/wchar.h agrees > > with > > POSIX 8 SUS V5. > > > > It is the man doc, definition, and implementation in > > newlib/libc/string/wcwidth.c which need changed to match the > > specification and return codes in: > > > > https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcwidth.html > Your argument overlooks one significant deviation: in POSIX, wchar_t has > 32 bits, in cygwin only 16. > So to make wcwidth work for *all* Unicode character code points, the 32 > bit version must be used. > I tested positively that this fixes the broken test case with gcc 16 I > had reported to the cygwin list. However, newlib is not used only by Cygwin, so I think newlib itself should follow POSIX. Shouldn't we have our own wcwidth() implementation for Cygwin? On second thought, since a 16‑bit wchar_t needs to be converted to a 32‑bit Unicode code point especially for surrogate pair, we cannot use wcwidth in the same way as Linux does. I wonder what the correct approach would be.
Am 31.05.2026 um 13:57 schrieb Takashi Yano: > Hi Thomas, > > On Sun, 31 May 2026 10:06:12 +0200 > Thomas Wolff wrote: >> Hi Brian, >> >> Am 31.05.2026 um 05:50 schrieb Brian Inglis via Cygwin: >>> On 2026-05-28 22:58, Thomas Wolff wrote: >>>> to make it compliant with newlib and the manual page; >>>> fixes cases of wrong width calculation: >>>> https://cygwin.com/pipermail/cygwin/2026-April/259597.html >>>> as mentioned in >>>> https://cygwin.com/pipermail/cygwin/2026-May/259734.html >>>> as described in >>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125451#c14 >>>> attachment: >>> 0001-wchar.h-tweak-wcwidth-prototype-parameter-wchar_t-wi.patch >>> >>> The existing wcwidth declaration in newlib/libc/include/wchar.h agrees >>> with >>> POSIX 8 SUS V5. >>> >>> It is the man doc, definition, and implementation in >>> newlib/libc/string/wcwidth.c which need changed to match the >>> specification and return codes in: >>> >>> https://pubs.opengroup.org/onlinepubs/9799919799/functions/wcwidth.html >> Your argument overlooks one significant deviation: in POSIX, wchar_t has >> 32 bits, in cygwin only 16. >> So to make wcwidth work for *all* Unicode character code points, the 32 >> bit version must be used. >> I tested positively that this fixes the broken test case with gcc 16 I >> had reported to the cygwin list. > However, newlib is not used only by Cygwin, so I think newlib itself should > follow POSIX. Shouldn't we have our own wcwidth() implementation for Cygwin? > > On second thought, since a 16‑bit wchar_t needs to be converted to a 32‑bit > Unicode code point especially for surrogate pair, we cannot use wcwidth in > the same way as Linux does. I wonder what the correct approach would be. I don't there is a "correct" approach as POSIX probably did not consider this problem. But I just responded to a cute idea on the cygwin mailing list, which was unfeasible but I modified it with a proposal to return width 1 for a high surrogate, remember it, and then return 1 or 0 for the low surrogate, respectively.
diff --git a/newlib/libc/include/wchar.h b/newlib/libc/include/wchar.h index 7c37427e6..9bb3eaa42 100644 --- a/newlib/libc/include/wchar.h +++ b/newlib/libc/include/wchar.h @@ -179,7 +179,7 @@ extern size_t wcsxfrm_l (wchar_t *__restrict, const wchar_t *__restrict, size_t, #endif #if __XSI_VISIBLE -int wcwidth (const wchar_t); +int wcwidth (const wint_t); #endif wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); int wmemcmp (const wchar_t *, const wchar_t *, size_t);