aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--load.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/load.c b/load.c
index 3c0c723f72..38b26881ce 100644
--- a/load.c
+++ b/load.c
@@ -1060,6 +1060,33 @@ rb_ext_ractor_safe(bool flag)
GET_THREAD()->ext_config.ractor_safe = flag;
}
+#if 1
+static VALUE
+required_feature__realpath(VALUE path)
+{
+ return rb_realpath_internal(Qnil, path, 1);
+}
+
+static VALUE
+required_feature_realpath_rescue(VALUE path, VALUE exc)
+{
+ return path;
+}
+
+static VALUE
+required_feature_realpath(VALUE path)
+{
+ return rb_rescue(required_feature__realpath, path,
+ required_feature_realpath_rescue, path);
+}
+#else
+static VALUE
+required_feature_realpath(VALUE path)
+{
+ return rb_realpath_internal(Qnil, path, 1);
+}
+#endif
+
/*
* returns
* 0: if already loaded (false)
@@ -1111,7 +1138,7 @@ require_internal(rb_execution_context_t *ec, VALUE fname, int exception, bool wa
result = TAG_RETURN;
}
else if (RTEST(rb_hash_aref(realpaths,
- realpath = rb_realpath_internal(Qnil, path, 1)))) {
+ realpath = required_feature_realpath(path)))) {
result = 0;
}
else {