From a86be4b76d96464e4bb9aa108d2c01198125084e Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Tue, 20 Jun 2023 21:00:00 +0100 Subject: Tweak feature sorting and fix a chibicc bug That sorting function was a bit wonky, so make it just a little bit wonky instead. chibicc would produce confusing lex errors if given a stray single quote somewhere, so make it give non-confusing errors. Also get rid of canonicalize_newline() because it's unnecessary for SST so long as Windows Git isn't left in its default misconfigured state. --- src/build/codegen.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/build') diff --git a/src/build/codegen.c b/src/build/codegen.c index bf3ae1e..e24a096 100644 --- a/src/build/codegen.c +++ b/src/build/codegen.c @@ -81,14 +81,14 @@ static inline int cmp_feature(struct feature *e, const char *s) { } static inline int cmp_feature_bydesc(struct feature *e, const char *s) { for (const char *p = e->desc; ; ++p, ++s) { - // longer string first - if (!*s) return !!*p; else if (!*p) return -1; + // shortest string first + if (!*p) return !!*s; if (!*s) return -1; // case insensitive sort where possible - if (tolower(*p) > tolower(*s)) return 1; - if (tolower(*p) < tolower(*s)) return -1; + if (tolower((uchar)*p) > tolower((uchar)*s)) return 1; + if (tolower((uchar)*p) < tolower((uchar)*s)) return -1; // prioritise upper-case if same letter - if (isupper(*p) && islower(*s)) return 1; - if (islower(*p) && isupper(*s)) return -1; + if (isupper((uchar)*p) && islower((uchar)*s)) return 1; + if (islower((uchar)*p) && isupper((uchar)*s)) return -1; } return 0; } -- cgit v1.2.3