summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-04-18 20:58:35 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-04-18 23:19:58 +0900
commitec4e57cae0cc9fede7f7809f8e443cd811ebddb4 (patch)
treec841505807dc564a1433dba12a9ac688c72b4077 /hash.c
parent67e4d5e62340223c95e35afaee855f8c821a499d (diff)
Hoisted out reset_by_modified_env
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3041
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/hash.c b/hash.c
index 71bbfea4a0..86261019e6 100644
--- a/hash.c
+++ b/hash.c
@@ -4881,14 +4881,9 @@ env_name(volatile VALUE *s)
static VALUE env_aset(VALUE nm, VALUE val);
-static VALUE
-env_delete(VALUE name)
+static void
+reset_by_modified_env(const char *nam)
{
- const char *nam, *val;
-
- nam = env_name(name);
- val = getenv(nam);
-
/*
* ENV['TZ'] = nil has a special meaning.
* TZ is no longer considered up-to-date and ruby call tzset() as needed.
@@ -4898,6 +4893,15 @@ env_delete(VALUE name)
if (ENVMATCH(nam, TZ_ENV)) {
ruby_reset_timezone();
}
+}
+
+static VALUE
+env_delete(VALUE name)
+{
+ const char *nam = env_name(name);
+ const char *val = getenv(nam);
+
+ reset_by_modified_env(nam);
if (val) {
VALUE value = env_str_new2(val);
@@ -5327,9 +5331,7 @@ env_aset(VALUE nm, VALUE val)
if (ENVMATCH(name, PATH_ENV)) {
RB_GC_GUARD(nm);
}
- else if (ENVMATCH(name, TZ_ENV)) {
- ruby_reset_timezone();
- }
+ reset_by_modified_env(name);
return val;
}