diff options
author | Jeremy Evans <[email protected]> | 2021-10-04 07:35:39 -0700 |
---|---|---|
committer | Jeremy Evans <[email protected]> | 2021-10-04 07:43:24 -0900 |
commit | d9b7403746249b532ac57ca80112d7e63a417d86 (patch) | |
tree | 11df17e297f3c36a8d6f8ffbc51d484886f993ec | |
parent | b44c5187b4d05d8644242e532f2243210d0b74df (diff) |
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.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4931
-rw-r--r-- | load.c | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -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 { |