From cdd8798227e6f08eed7862f93adf010f6e2d10e2 Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Fri, 14 Aug 2026 10:39:07 +0200 Subject: [PATCH] Use unsigned char for character range comparisons in match_class --- cmdline/str.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cmdline/str.c b/cmdline/str.c index 8109e2a4..01141c07 100644 --- a/cmdline/str.c +++ b/cmdline/str.c @@ -316,14 +316,15 @@ static const char* match_class(const char* p, char t) while (*p && *p != ']') { if (p[1] == '-' && p[2] != ']' && p[2] != 0) { /* range [a-z] */ - char start = *p; - char end = p[2]; + unsigned char start = (unsigned char)*p; + unsigned char end = (unsigned char)p[2]; + unsigned char c = (unsigned char)t; #ifdef WIN32 - start = tolower((unsigned char)start); - end = tolower((unsigned char)end); - t = tolower((unsigned char)t); + start = tolower(start); + end = tolower(end); + c = tolower(c); #endif - if (t >= start && t <= end) + if (c >= start && c <= end) matched = 1; p += 3; } else {