ruby-changes:14450
From: knu <ko1@a...>
Date: Mon, 11 Jan 2010 12:58:55 +0900 (JST)
Subject: [ruby-changes:14450] Ruby:r26279 (trunk): * hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3)
knu 2010-01-11 12:58:39 +0900 (Mon, 11 Jan 2010) New Revision: 26279 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26279 Log: * hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3) or putenv(3) fails. [ruby-dev:40023] Modified files: trunk/ChangeLog trunk/NEWS trunk/hash.c Index: ChangeLog =================================================================== --- ChangeLog (revision 26278) +++ ChangeLog (revision 26279) @@ -1,3 +1,8 @@ +Mon Jan 11 12:47:58 2010 Akinori MUSHA <knu@i...> + + * hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3) + or putenv(3) fails. [ruby-dev:40023] + Sun Jan 10 17:25:24 2010 Nobuyoshi Nakada <nobu@r...> * lib/webrick/accesslog.rb : Escape needed. Index: hash.c =================================================================== --- hash.c (revision 26278) +++ hash.c (revision 26279) @@ -2064,10 +2064,13 @@ #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 @@ 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; Index: NEWS =================================================================== --- NEWS (revision 26278) +++ NEWS (revision 26279) @@ -45,6 +45,7 @@ * ENV * Uses locale's encoding + * ENV.[]= raises Errno::{EINVAL,ENOMEM} etc. on failure. * Float * new constants: -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/