[前][次][番号順一覧][スレッド一覧]

ruby-changes:66930

From: Jeremy <ko1@a...>
Date: Wed, 28 Jul 2021 12:30:03 +0900 (JST)
Subject: [ruby-changes:66930] 345db8f2aa (master): Avoid pointless attempts to open .so file if already required

https://git.ruby-lang.org/ruby.git/commit/?id=345db8f2aa

From 345db8f2aa373a31c619c8f85bd372f0a20829c1 Mon Sep 17 00:00:00 2001
From: Jeremy Evans <code@j...>
Date: Tue, 27 Jul 2021 13:55:21 -0700
Subject: 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(-)

diff --git a/load.c b/load.c
index 74c94f9..9f0dde2 100644
--- a/load.c
+++ b/load.c
@@ -35,6 +35,11 @@ static const char *const loadable_ext[] = { https://github.com/ruby/ruby/blob/trunk/load.c#L35
     0
 };
 
+static const char *const ruby_ext[] = {
+    ".rb",
+    0
+};
+
 enum expand_type {
     EXPAND_ALL,
     EXPAND_RELATIVE,
@@ -963,7 +968,7 @@ search_required(VALUE fname, volatile VALUE *path, feature_func rb_feature_p) https://github.com/ruby/ruby/blob/trunk/load.c#L968
 	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)
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]