mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
5cc002a132
commit
e4cddd7d2e
4 changed files with 12 additions and 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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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])
|
||||
|
|
|
|||
2
hash.c
2
hash.c
|
|
@ -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)
|
||||
|
|
|
|||
11
ruby.c
11
ruby.c
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue