summaryrefslogtreecommitdiff
path: root/src/regex
diff options
context:
space:
mode:
Diffstat (limited to 'src/regex')
-rw-r--r--src/regex/fnmatch.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/regex/fnmatch.c b/src/regex/fnmatch.c
index 7f6b65f3..978fff88 100644
--- a/src/regex/fnmatch.c
+++ b/src/regex/fnmatch.c
@@ -18,6 +18,7 @@
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
+#include "locale_impl.h"
#define END 0
#define UNMATCHABLE -2
@@ -229,7 +230,7 @@ static int fnmatch_internal(const char *pat, size_t m, const char *str, size_t n
* On illegal sequences we may get it wrong, but in that case
* we necessarily have a matching failure anyway. */
for (s=endstr; s>str && tailcnt; tailcnt--) {
- if (s[-1] < 128U) s--;
+ if (s[-1] < 128U || MB_CUR_MAX==1) s--;
else while ((unsigned char)*--s-0x80U<0x40 && s>str);
}
if (tailcnt) return FNM_NOMATCH;