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