diff options
author | nagachika <[email protected]> | 2021-08-01 18:30:39 +0900 |
---|---|---|
committer | nagachika <[email protected]> | 2021-08-01 18:30:39 +0900 |
commit | 6f4ab641bb1035c5811e42e43320112e4a502a0e (patch) | |
tree | 5a389fdaa90a32ad0755483f2f215b33f7a6a401 | |
parent | 0dbb3c15dbe9b7693ea362c94ed8939d20cba083 (diff) |
merge revision(s) 345db8f2aa373a31c619c8f85bd372f0a20829c1: [Backport #10902]
Avoid pointless attempts to open .so file if already required
When attempting to require a file without an extension that has
already been required or provided with an .so extension, only
look for files with an .rb extension. There is no point in
trying to find files with an .so extension, since we already
know one has been loaded.
Previously, attempting to require such a file scanned the load
path twice, once for .rb and once for .so. Now it only scans
once for .rb. The scan once for .rb cannot be avoided, since
the .rb file would take precedence and should be loaded if it
exists.
Fixes [Bug #10902]
---
load.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
-rw-r--r-- | load.c | 7 | ||||
-rw-r--r-- | version.h | 2 |
2 files changed, 7 insertions, 2 deletions
@@ -35,6 +35,11 @@ static const char *const loadable_ext[] = { 0 }; +static const char *const ruby_ext[] = { + ".rb", + 0 +}; + enum expand_type { EXPAND_ALL, EXPAND_RELATIVE, @@ -964,7 +969,7 @@ search_required(VALUE fname, volatile VALUE *path, feature_func rb_feature_p) return 'r'; } tmp = fname; - type = rb_find_file_ext(&tmp, loadable_ext); + type = rb_find_file_ext(&tmp, ft == 's' ? ruby_ext : loadable_ext); switch (type) { case 0: if (ft) @@ -12,7 +12,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 3 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 118 +#define RUBY_PATCHLEVEL 119 #define RUBY_RELEASE_YEAR 2021 #define RUBY_RELEASE_MONTH 8 |