From 8b764b1daf3cc3938cc55347a39da34714894bdf Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 24 Dec 2014 11:38:21 +0000 Subject: dir.c: glob performance * dir.c (glob_make_pattern): restrict searching case-insensitive name from the filesystem to only last part, for the performance. [ruby-core:63591] [ruby-core:63591] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- dir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'dir.c') diff --git a/dir.c b/dir.c index bc26436114..36e7a5ed69 100644 --- a/dir.c +++ b/dir.c @@ -1241,7 +1241,8 @@ glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc) else { const char *m = find_dirsep(p, e, flags, enc); const enum glob_pattern_type magic = has_magic(p, m, flags, enc); - const enum glob_pattern_type non_magic = (HAVE_HFS || FNM_SYSCASE) ? PLAIN : ALPHA; + const enum glob_pattern_type non_magic = + ((HAVE_HFS || FNM_SYSCASE) && (m == e || (m+1 == e && *m == '/'))) ? PLAIN : ALPHA; char *buf; if (!(FNM_SYSCASE || magic > non_magic) && !recursive && *m) { -- cgit v1.2.3