ruby-changes:20833
From: yugui <ko1@a...>
Date: Sun, 7 Aug 2011 19:05:49 +0900 (JST)
Subject: [ruby-changes:20833] yugui:r32882 (ruby_1_9_2): merges r31875 from trunk into ruby_1_9_2.
yugui 2011-08-07 19:04:22 +0900 (Sun, 07 Aug 2011) New Revision: 32882 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32882 Log: merges r31875 from trunk into ruby_1_9_2. -- * load.c (loaded_feature_path): cut nonsence loop execution to fix performance bug. Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/load.c branches/ruby_1_9_2/version.h Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 32881) +++ ruby_1_9_2/ChangeLog (revision 32882) @@ -1,3 +1,8 @@ +Wed Jun 1 06:43:13 2011 Masaya Tarui <tarui@r...> + + * load.c (loaded_feature_path): cut nonsence loop execution to fix + performance bug. + Sat Jun 25 23:45:30 2011 CHIKANAGA Tomoyuki <nagachika00@g...> * vm_insnhelper.c (vm_search_superclass): avoid control frame Index: ruby_1_9_2/load.c =================================================================== --- ruby_1_9_2/load.c (revision 32881) +++ ruby_1_9_2/load.c (revision 32882) @@ -73,16 +73,27 @@ int type, VALUE load_path) { long i; + long plen; + const char *e; + if(vlen < len) return 0; + if (!strncmp(name+(vlen-len),feature,len)){ + plen = vlen - len - 1; + } else { + for (e = name + vlen; name != e && *e != '.' && *e != '/'; --e); + if (*e!='.' || + e-name < len || + strncmp(e-len,feature,len) ) + return 0; + plen = e - name - len - 1; + } for (i = 0; i < RARRAY_LEN(load_path); ++i) { VALUE p = RARRAY_PTR(load_path)[i]; const char *s = StringValuePtr(p); long n = RSTRING_LEN(p); - if (vlen < n + len + 1) continue; + if (n != plen ) continue; if (n && (strncmp(name, s, n) || name[n] != '/')) continue; - if (strncmp(name + n + 1, feature, len)) continue; - if (name[n+len+1] && name[n+len+1] != '.') continue; switch (type) { case 's': if (IS_DLEXT(&name[n+len+1])) return p; Index: ruby_1_9_2/version.h =================================================================== --- ruby_1_9_2/version.h (revision 32881) +++ ruby_1_9_2/version.h (revision 32882) @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_PATCHLEVEL 293 +#define RUBY_PATCHLEVEL 294 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/