DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 64VHhXDX2790232
Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com
Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com
DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 64VHhXDX2790232
Authentication-Results: delorie.com;
	dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=h14m1Y4R
X-Recipient: archive-cygwin@delorie.com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 235144BA23F4
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
	s=default; t=1780249412;
	bh=feX91GJHIlHRBmlaXRC/Ii2PcUjB4yDR0k7AC+GtI7g=;
	h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe:
	 List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:
	 From;
	b=h14m1Y4RCy0hzZI6ZHyCRZRR8Sz7KAWWvRaxcuDha9npJxjWWZ76dfFymgPMsVQAA
	 XHmZWdOhKWDECO4fqtSji2kSzVZjJoSvnOXfbD/E8uCVGdMFj/Jxb33u9IR1dj2xC/
	 U+v7kTKGgjE9KDXx7yhh6JYagKDm6A5wl/bbBZKw=
X-Original-To: cygwin@cygwin.com
Delivered-To: cygwin@cygwin.com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 03CF94BA23E4
ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 03CF94BA23E4
ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780249392; cv=none;
 b=ZyGXhpRiU5g2z/TjDO0X0akXfTWXeDb1xpUd678o6KVXrMcIVec6bYdiMVf+dozYID6IxdE4maFTwztGzjUF9VuP7dNG835blXWSS22px6Cpe2hLuaCiiLnnNukUzqRdi0nJjOQExKCSAZ330QHz5WQjfqa3WVz+EozxwztacPs=
ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key;
 t=1780249392; c=relaxed/simple;
 bh=L4tqJHxE2YLAckVunLt7oneY+Oy/7rAd6hfYQ7GXtFk=;
 h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;
 b=WS68CmhoFFNI6y/tIBFCKQY7V5EvaJQWhaNZPZHL1znDK3S9ACEnl0NQBx/GsTER58JwgM/nx3aTlF4OXB2L+EZGXGbvJnHZ1gWkvr/ivixRWT5nPJ8Va3OCHNt7S75Bx5Hd0VayTYT3CxlbikM7MldXE6SkZpzVSyyZjN9rgRY=
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=bNDwbDTW
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 03CF94BA23E4
X-UI-Sender-Class: 55c96926-9e95-11ee-ae09-1f7a4046a0f6
Message-ID: <459f523d-9ba9-436f-842f-d9a0cbd919d5@towo.net>
Date: Sun, 31 May 2026 19:43:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: wcwidth broken with gcc 16
To: cygwin@cygwin.com
References: <a9676834-0368-4a8a-88b0-da5e9483b536@towo.net>
 <874ikpawdk.fsf@Gerda.invalid>
 <8ff2ab8d-dfdc-459c-96f3-ed4a4f451440@towo.net>
 <0140C1F4-CA22-46DE-AE21-69C5427C59B5@unified-streaming.com>
 <e94174b7-ea9b-45ca-bfd3-7979ce988920@towo.net>
 <e362b49c-521c-4cd5-8963-c17d5770619b@SystematicSW.ab.ca>
 <fbbeb91a-4c5a-dbe6-1bb3-206cf14a73bc@wisemo.com>
 <4f885156-7772-43d7-ab72-c88f0a7d1e52@towo.net>
 <112594ad-3c25-4dad-b1bc-071b4951ed98@towo.net>
 <97f0f3c6-9f2c-429c-aa8e-875b7806b275@towo.net>
 <8733z9jpfj.fsf@Gerda.invalid>
 <b70d8366-8970-4cdc-a693-6d826fe76277@towo.net>
 <b8c1571a-1956-4316-a6a9-32176b6c7c80@towo.net>
 <87pl2bab08.fsf@Gerda.invalid>
 <2a39e204-bd8b-4511-bd34-703899600e9e@towo.net>
Autocrypt: addr=towo@towo.net; keydata=
 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 kQ==
In-Reply-To: <2a39e204-bd8b-4511-bd34-703899600e9e@towo.net>
X-Provags-ID: V03:K1:k2oDKhmi4MpURqdiKv7lTTrRq69uQnBEt4gZjgnvHpg1sHBNj04
 iDIT3QQqmCo+6zpGKdGmkflzAVvRE0e2fPAN4gTl00fhujy2VU8m74mNcTybfBTQYUMYNSq
 39ZidC1sEF/ZTvhdLgeShoXWZvv5mngQH2hGmM42hRiH60+6iiz5D5L7Nvee9DGVwiQ1cDz
 IO7cF36ZOj6w392fnXkoQ==
UI-OutboundReport: notjunk:1;M01:P0:uCdeHoMc2e0=;G8rq8q2WbUdpqpJBADqu9Ck1pCx
 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
X-BeenThere: cygwin@cygwin.com
X-Mailman-Version: 2.1.30
Precedence: list
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
 <mailto:cygwin-request@cygwin.com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-request@cygwin.com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
 <mailto:cygwin-request@cygwin.com?subject=subscribe>
From: Thomas Wolff via Cygwin <cygwin@cygwin.com>
Reply-To: Thomas Wolff <towo@towo.net>
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: cygwin-bounces~archive-cygwin=delorie.com@cygwin.com
Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie.com@cygwin.com>
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 64VHhXDX2790232


Am 31.05.2026 um 18:53 schrieb Thomas Wolff via Cygwin:
>
> Am 31.05.2026 um 16:50 schrieb ASSI via Cygwin:
>> Thomas Wolff via Cygwin writes:
>>> The implementation was extended to wint_t some years ago just to
>>> enable the functionality indicated above, and it used to work until
>>> gcc 15.
>> That was by accident and dependent on undefined behaviour in the
>> compiler for x86_64 ABI, as explained to you already.
>>
>>> For some change in gcc 16, it is now necessary to adapt the prototype
>>> too, or gcc will apply the wrong extension and yield broken results.
>> You don't own the prototype of a standardised public API function and
>> don't get to change it for that very reason.
> cygwin has changed it already by defining wchar_t as 16-bit. My fix 
> only reverts this.
>
>> The fix for your bug is easy enough
> It's just not a fix because it narrows the parameter to 16 bits and 
> thus breaks current wcwidth functionality.
>
>> and I don't get why you insist making it even more wrong instead.
> Because it's not wrong but the right thing to do as I had explained 
> before.
>
>>
>> --8<---------------cut here---------------start------------->8---
>> diff --git a/newlib/libc/string/wcwidth.c b/newlib/libc/string/wcwidth.c
>> index 8348eefe8..65604c061 100644
>> --- a/newlib/libc/string/wcwidth.c
>> +++ b/newlib/libc/string/wcwidth.c
>> @@ -230,7 +230,7 @@ __wcwidth (const wint_t ucs)
>>   }
>>     int
>> -wcwidth (const wint_t wc)
>> +wcwidth (const wchar_t wc)
>>   {
Well, OK, I see what you mean. Changing the parameter width of the 
implementation would probably fix the cases from U+8000 to U+FFFF but 
the assignment below would not make any difference.
For characters > 0xFFFF, the prototype width extension would actually be 
needed independently from gcc versions, and I still claim it's the right 
thing to do, in compensation for the cygwin wchar_t limitation.

>>     wint_t wi = wc;
>>   --8<---------------cut here---------------end--------------->8---
>>
>> Again, the assignment of wc to wi should do the proper zero extension
>> you seek and keeps the public signature intact (and that was what the
>> code did before your change).  The stub then calls the implementation
>> __wcwidth (which does take a wint_t argument), there just is no way of
>> feeding it codepoints above 16 bit (and there never was such a
>> possibility for correct code in Cygwin).
>>
>> Now I get that you think that
>>
>> sizeof(wchar_t) == sizeof(wint_t)
>>
>> should hold like on all GNU systems, but that isn't the case since
>> Cygwin is on Windows and so WCHAR_MAX == 0xffffu (I think you know the
>> backstory to that).  So you cannot have code points beyond 16 bits as
>> input to wcwidth anyway and everything else is treated correctly (and as
>> before and after the change).  Whether there needs to be a separate API
>> for dealing with such codepoints (essentially in UTF-32) is a separate
>> discussion.
>>
>>
>> Regards,
>> Achim.
>
>


-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

