diff options
author | ocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-02-01 13:27:47 +0000 |
---|---|---|
committer | ocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-02-01 13:27:47 +0000 |
commit | e4cddd7d2e781ce6cb26dc7fdbb5a2c290052fc2 (patch) | |
tree | 4c272cba2f525ce2a6c0bc630fc2bf63f24d79f4 | |
parent | 5cc002a1326e7e3d3db1c4512e1d6e1f0661be5d (diff) |
* configure.in, hash.c (ruby_setenv): use setenv(3) and unsetenv(3)
where they are supported. modifing environ variable seems to
segfault solaris 10. [ruby-core:7276] [ruby-dev:28270]
* ruby.c (set_arg0): if use setenv(3), environ space cannot be used
for altering argv[0].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | hash.c | 2 | ||||
-rw-r--r-- | ruby.c | 11 |
4 files changed, 12 insertions, 5 deletions
@@ -8,7 +8,7 @@ Tue Jan 31 11:58:51 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> Tue Jan 31 00:10:26 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp> * ext/syck/rubyext.c (syck_resolver_transfer): workaround for SEGV. - ex: YAML.load("!map:B {}"). [ruby-core:7217] + ex: ruby -ryaml -e 'YAML.load("!map:B {}")' [ruby-core:7217] Sat Jan 28 07:56:57 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp> diff --git a/configure.in b/configure.in index f13a2f4adf..7f305e52fb 100644 --- a/configure.in +++ b/configure.in @@ -444,7 +444,7 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync getcwd eaccess\ lchown lchmod getpgrp setpgrp getpgid setpgid initgroups\ getgroups setgroups getpriority getrlimit dlopen sigprocmask\ sigaction _setjmp setsid telldir seekdir fchmod mktime timegm\ - cosh sinh tanh setuid setgid) + cosh sinh tanh setuid setgid setenv unsetenv) AC_ARG_ENABLE(setreuid, [ --enable-setreuid use setreuid()/setregid() according to need even if obsolete.], [use_setreuid=$enableval]) @@ -1812,7 +1812,7 @@ ruby_setenv(name, value) * RTL's environ global variable directly yet. */ SetEnvironmentVariable(name,value); -#elif defined __CYGWIN__ +#elif defined(HAVE_SETENV) && defined(HAVE_UNSETENV) #undef setenv #undef unsetenv if (value) @@ -971,7 +971,14 @@ VALUE rb_progname; VALUE rb_argv; VALUE rb_argv0; -#if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE) && !defined(DOSISH) +#if defined(PSTAT_SETCMD) || defined(HAVE_SETPROCTITLE) +#elif defined(_WIN32) +#elif defined(HAVE_SETENV) && defined(HAVE_UNSETENV) +#else +#define USE_ENVSPACE_FOR_ARG0 +#endif + +#ifdef USE_ENVSPACE_FOR_ARG0 static struct { char *begin, *end; } envspace; @@ -1047,7 +1054,7 @@ set_arg0(val, id) break; } } -#ifndef DOSISH +#if defined(USE_ENVSPACE_FOR_ARG0) if (s + 1 == envspace.begin) { s = envspace.end; ruby_setenv("", NULL); /* duplicate environ vars */ |