[newlib-cygwin/main] Cygwin: fnmatch: fix range comparison in C locale

Corinna Vinschen corinna@sourceware.org
Thu Jul 27 19:58:05 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=a13b0b7aea9d12c6cefe21082ef5c921ac071e3a

commit a13b0b7aea9d12c6cefe21082ef5c921ac071e3a
Author:     Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Thu Jul 27 21:57:49 2023 +0200
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Thu Jul 27 21:57:49 2023 +0200

    Cygwin: fnmatch: fix range comparison in C locale
    
    Commit c36064bbd0c5 introduced operating on character pointers
    instead of operating on characters, to allow collating symbols.
    This patch neglected to change the expression for range
    comparison in case we're in the C locale.  Thus it suddenly
    compared pointers instead of characters.  Fix that.
    
    Fixes: c36064bbd0c5 ("Cygwin: fnmatch: support collating symbols in [. .] brackets")
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/libc/fnmatch.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c
index 8a229a142032..a1cb5d1e4616 100644
--- a/winsup/cygwin/libc/fnmatch.c
+++ b/winsup/cygwin/libc/fnmatch.c
@@ -353,7 +353,7 @@ rangematch(const wint_t *pattern, wint_t *test, int flags, wint_t **newp,
 			}
 
 			if ((!__get_current_collate_locale ()->win_locale[0]) ?
-			    c <= test && test <= c2 :
+			    *c <= *test && *test <= *c2 :
 			       __wscollate_range_cmp(c, test, clen, tlen) <= 0
 			    && __wscollate_range_cmp(test, c2, tlen, c2len) <= 0
 			   )


More information about the Cygwin-cvs mailing list