diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-01-11 03:58:39 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-01-11 03:58:39 +0000 |
commit | af23025d77b112a2c5db1735b674b87e81965569 (patch) | |
tree | 1b5c8ccb3dd3946ef235e7cdfee53e80e016a991 /hash.c | |
parent | 73cd7b6697849b563a0154907b8a61c43e4ba209 (diff) |
* hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3)
or putenv(3) fails. [ruby-dev:40023]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -2064,10 +2064,13 @@ ruby_setenv(const char *name, const char *value) #elif defined(HAVE_SETENV) && defined(HAVE_UNSETENV) #undef setenv #undef unsetenv - if (value) - setenv(name,value,1); - else - unsetenv(name); + if (value) { + if (setenv(name, value, 1)) + rb_sys_fail("setenv"); + } else { + if (unsetenv(name)) + rb_sys_fail("unsetenv"); + } #elif defined __sun__ size_t len = strlen(name); char **env_ptr, *str; @@ -2081,7 +2084,8 @@ ruby_setenv(const char *name, const char *value) if (value) { str = malloc(len += strlen(value) + 2); snprintf(str, len, "%s=%s", name, value); - putenv(str); + if (putenv(str)) + rb_sys_fail("putenv"); } #else /* WIN32 */ size_t len; |