From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2 autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 18018 invoked from network); 6 Jan 2023 09:20:29 -0000 Received: from second.openwall.net (193.110.157.125) by inbox.vuxu.org with ESMTPUTF8; 6 Jan 2023 09:20:29 -0000 Received: (qmail 5254 invoked by uid 550); 6 Jan 2023 09:20:24 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 5222 invoked from network); 6 Jan 2023 09:20:23 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1672996812; bh=rCs9F7kUCDmXNJCc3u3HeNclNvS79WQhFp/Lhe1L7P8=; h=X-UI-Sender-Class:Date:From:To:Subject:References:In-Reply-To; b=gNxUKXW0ENJLtoM1EZLSgkTBuRWXmMC/6bA5GJkqYKHJlyfUDmPAlFYklD0RSMhTI JFB/rb6SSZ+bdhVBs4NFQOs8WNDRcHgQaDEman15vcBQTyYp64NW49yewuk7geZzcZ Tnj9UYzAYh2l3wIhRXUz+9bEL57egJAvP4b9MVyv37sgWjl3l3jeFYh9SDmkdkWVqr aYqVeIJiKWlYsQVzfX1LS56TCyE7qHnCThpEQ5hzP89haWpoT/WWMFVu3L1zTGkJFr IuHSs+qJ5e1E5TTTfJz6It6Vk9yp0qsLgZJCZRhkvCnzkYNBXdSWyjrLN0ca5SLI0D IKCEqO7xuSDVw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Date: Fri, 6 Jan 2023 10:20:10 +0100 From: Markus Wichmann To: musl@lists.openwall.com Message-ID: <20230106092010.GA2032@voyager> References: <20230104150719.252185-1-gabravier@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230104150719.252185-1-gabravier@gmail.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Provags-ID: V03:K1:0otI9RXs3P56KwGYHD2Q9RbQfUGh+lbot9z13EzX5KnR9JUqniL tLt+TJtsAX8YJyXozSMUfk6Zp7/lCrdnZDDatT053/blf7GP6Q8lsCwlI+ukyb4Z8y7q9Rp 3wCUEXRe6oyNbz8s/8J9WmPrSr2z0yucIdm2TJO9bekD4O93AkNIuI6+fdoj72J97jQ42I6 roiI4uqxHtrPZb5znhODw== UI-OutboundReport: notjunk:1;M01:P0:RgagkP7vI+o=;NavllUZN1DVyIF68suLWh70OpjJ olTjE5RKgoMzmLZirGGBO/QD/cVfethmNfY2vlaIRcYd8bI8XTHcWM8N6r0BV1qIkKpFPxZnC RnciNRvWypftW+mbhWuodRr8epIn3EfQU5qjQRjr7ndxE0BKYvK/XLM/QQ3YO3TlX4EoKplOs D05htBf3jnhEcJcMyBXnp5crvkL6xigF+f6S4RGaL8er3P22za4vYs7F98ylr7/e6L04MS5i3 isEKohKnr8jXPr7TEObsliFdmPss0lsAl6a/YLhh09vfMY5LcJSmFJrypNsgTVJbXg57M7Gdc pf6NPx8/W4n2LPRwiCrd8PeZNjc2e6OePz44ERnyQXqPwIdyB8bdWzvaO4HuYXCw/bL+LTJJP pFXx+oBfTt9/CwfeSfRJqPVhEzDAuaz0ewCYvs6xRsxC0gZryPPFFa1+Ev/EdfnshrxU04Lk4 GnJxxjY55qVoW/drfBFGEu5ZAigsub/RrxjCUNUVooOy1rEOYjcEk6nZoD9h2xT/Wpd/jZLM0 N3Bm+687qgOiyez41R2V98+oCBcQiiIGeEqEusD07V73oL19N+gDPwlX4sABZ+jYqMe8yvf/F lqpk0hj8Vc/mLWy0RRjIC1aYxIGtAVkLtVUh3YlP4dI6n7Xa30FzrqfMBuAnlNao4WaU7OrSS Nx5ONFQ0L1XbOHG16a+uxvCCNjH+q9g+Gfa5Bsy6OOELt8eIXH3V7is9WA+EwLZZ4n9wEDO3B kCZvIXaVg2f2o3gpR+gEVj+itGOPc9J4/6zPgoXfRgAQnMvf5yWxCfwb5FTV/sZ0Dvx0Zm1Qy PKFMQdGz+3eiIyyAIb8hONIKeR6o4Bo58ZK4EzSYjIUsi3xk8Ei44KLZIZclzE5bCg+LP4aYL YpxHrqtsXx4J4tYb/IlcrTI9HCJOlU3549zrPhutzPhtYyF/OTtcibbj9hx1Ys5bMTjm7RqHT puy+3nqTI9X9LB6aepRmELooy40= Subject: Re: [musl] [PATCH] fix return value of wcs{,n}cmp for near-limits signed wchar_t values On Wed, Jan 04, 2023 at 04:07:19PM +0100, Gabriel Ravier wrote: > int wcscmp(const wchar_t *l, const wchar_t *r) > { > for (; *l==*r && *l && *r; l++, r++); I just noticed this line. Isn't the "&& *r" part superfluous? If r is a prefix of l, then *r and *l will be unequal, and the loop will terminate because of the first condition alone. (If l is a prefix of r, we need the second condition to terminate the loop.) > - return *l - *r; > + return *l < *r ? -1 : *l > *r; > } Ah, that old bug. The problem is that the difference between two 32-bit values takes up 33 bits to save. I wonder if it would be worth it to just cast the values to 64 bits, then dividing the result by two. You know, like return ((int64_t)*l - *r) >> 1; Although that does presuppose that wchar_t is smaller than 64 bits, which the proposed change does not require. Ciao, Markus