--- 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;