diff options
Diffstat (limited to 'libc/misc/fnmatch/fnmatch_loop.c')
-rw-r--r-- | libc/misc/fnmatch/fnmatch_loop.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libc/misc/fnmatch/fnmatch_loop.c b/libc/misc/fnmatch/fnmatch_loop.c index 6d037f8f9..a09cfbb11 100644 --- a/libc/misc/fnmatch/fnmatch_loop.c +++ b/libc/misc/fnmatch/fnmatch_loop.c @@ -204,6 +204,8 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end, case L('['): { /* Nonzero if the sense of the character class is inverted. */ + CHAR *p_init = p; + CHAR *n_init = n; register int not; CHAR cold; UCHAR fn; @@ -409,8 +411,13 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end, } #endif else if (c == L('\0')) - /* [ (unterminated) loses. */ - return FNM_NOMATCH; + { + /* [ unterminated, treat as normal character. */ + p = p_init; + n = n_init; + c = L('['); + goto normal_match; + } else { int is_range = 0; |