From: Pádraig Brady Date: Thu, 28 Dec 2023 00:02:42 +0000 (+0000) Subject: sort: fix thousands grouping handling on single byte locales X-Git-Tag: v9.5~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e67ccd745d08aff1cf9fa2911ec63e7ffd31be4;p=thirdparty%2Fcoreutils.git sort: fix thousands grouping handling on single byte locales * gl/lib/strnumcmp-in.h (numcompare): After commit v9.0-8-g6cafb122f, we need to treat characters as signed to avoid invalid comparisons between negative integers and unsigned characters. * NEWS: Mention the bug fix. --- diff --git a/NEWS b/NEWS index 26da9993ef..61ba3cf194 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,11 @@ GNU coreutils NEWS -*- outline -*- numfmt options like --suffix no longer have an arbitrary 127-byte limit. [bug introduced with numfmt in coreutils-8.21] + sort again handles thousands grouping characters in single-byte locales + where the grouping character is greater than CHAR_MAX. For e.g. signed + character platforms with a 0xA0 (aka  ) grouping character. + [bug introduced in coreutils-9.1] + tail no longer mishandles input from files in /proc and /sys file systems, on systems with a page size larger than the stdio BUFSIZ. [This bug was present in "the beginning".] diff --git a/gl/lib/strnumcmp-in.h b/gl/lib/strnumcmp-in.h index 39b5caf77a..3a69db7323 100644 --- a/gl/lib/strnumcmp-in.h +++ b/gl/lib/strnumcmp-in.h @@ -114,8 +114,8 @@ static inline int _GL_ATTRIBUTE_PURE numcompare (char const *a, char const *b, int decimal_point, int thousands_sep) { - unsigned char tmpa = *a; - unsigned char tmpb = *b; + char tmpa = *a; + char tmpb = *b; int tmp; size_t log_a; size_t log_b;