--- glob.c.orig	2019-11-18 23:43:59.426852570 +0100
+++ glob.c	2019-11-19 00:49:00.633217828 +0100
@@ -736,28 +736,28 @@ match(const char *name, const Char *pat,
 	    if (*name == EOS)
 		break;
 	    pat += pwk;
-	    pwk = One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
 	    name += lwk;
 	    if ((negate_range = ((*pat & M_MASK) == m_not)) != 0) {
+	        pwk = One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
 		pat += pwk;
-		pwk = One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
 	    }
 	    while ((*pat & M_MASK) != M_END) {
+		pwk = One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
+		pat += pwk;
 		if ((*pat & M_MASK) == M_RNG) {
 		    __Char wc2;
-
+		    pwk = One_Char_mbtowc(&wc2, pat, MB_LEN_MAX);
 		    pat += pwk;
 		    pwk = One_Char_mbtowc(&wc2, pat, MB_LEN_MAX);
+		    pat += pwk;
 		    if (globcharcoll(wc, wk, 0) <= 0 &&
 			globcharcoll(wk, wc2, 0) <= 0)
 			ok = 1;
 		} else if (wc == wk)
 		    ok = 1;
-		pat += pwk;
-		pwk = One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
 	    }
-	    pat += pwk;
 	    pwk = One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
+	    pat += pwk;
 	    if (ok == negate_range)
 		break;
 	    continue;
