From af23025d77b112a2c5db1735b674b87e81965569 Mon Sep 17 00:00:00 2001 From: knu Date: Mon, 11 Jan 2010 03:58:39 +0000 Subject: * 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 --- hash.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'hash.c') diff --git a/hash.c b/hash.c index 321f7a7375..ca691f4dd4 100644 --- a/hash.c +++ b/hash.c @@ -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; -- cgit v1.2.3