summaryrefslogtreecommitdiff
path: root/load.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-06-14 13:49:10 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-06-14 23:24:17 +0900
commit70833fab7fc2e912f5a405157b3afa101b482c17 (patch)
treebb50c1068d74d01fa4061e1e8fe4da744df75863 /load.c
parent931ea7cfbec6d863cd8b48308804323704a2696c (diff)
downloadruby-70833fab7fc2e912f5a405157b3afa101b482c17.tar.gz
Suppress gcc11 clobbered warning
Diffstat (limited to 'load.c')
-rw-r--r--load.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/load.c b/load.c
index fdc329cd01..cc758dbae6 100644
--- a/load.c
+++ b/load.c
@@ -1036,12 +1036,14 @@ require_internal(rb_execution_context_t *ec, VALUE fname, int exception)
enum ruby_tag_type state;
char *volatile ftptr = 0;
VALUE path;
+ volatile VALUE saved_path;
volatile bool reset_ext_config = false;
struct rb_ext_config prev_ext_config;
fname = rb_get_path(fname);
path = rb_str_encode_ospath(fname);
RUBY_DTRACE_HOOK(REQUIRE_ENTRY, RSTRING_PTR(fname));
+ saved_path = path;
EC_PUSH_TAG(ec);
ec->errinfo = Qnil; /* ensure */
@@ -1051,8 +1053,9 @@ require_internal(rb_execution_context_t *ec, VALUE fname, int exception)
int found;
RUBY_DTRACE_HOOK(FIND_REQUIRE_ENTRY, RSTRING_PTR(fname));
- found = search_required(path, &path, rb_feature_p);
+ found = search_required(path, &saved_path, rb_feature_p);
RUBY_DTRACE_HOOK(FIND_REQUIRE_RETURN, RSTRING_PTR(fname));
+ path = saved_path;
if (found) {
if (!path || !(ftptr = load_lock(RSTRING_PTR(path)))) {
@@ -1086,6 +1089,7 @@ require_internal(rb_execution_context_t *ec, VALUE fname, int exception)
th2->top_wrapper = saved.wrapper;
if (reset_ext_config) ext_config_pop(th2, &prev_ext_config);
+ path = saved_path;
if (ftptr) load_unlock(RSTRING_PTR(path), !state);
if (state) {