[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]