Use a rescue around the internal realpath call for each loaded feature
This appears to be only necessary on Solaris, but this commit enables it unconditionally to test breakage. The following commit will switch to only enabling it on Solaris.
This commit is contained in:
parent
b44c5187b4
commit
d9b7403746
Notes:
git
2021-10-05 01:43:44 +09:00
29
load.c
29
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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user