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 | 853b56ba0858996fb986ddd520d38e9c7ecdc042 (patch) | |
| tree | 4c272cba2f525ce2a6c0bc630fc2bf63f24d79f4 /ruby.c | |
| parent | 5adc8318383ee9bf23f2147dfc18a93fb85254e6 (diff) | |
| download | ruby-853b56ba0858996fb986ddd520d38e9c7ecdc042.tar.gz ruby-853b56ba0858996fb986ddd520d38e9c7ecdc042.tar.xz ruby-853b56ba0858996fb986ddd520d38e9c7ecdc042.zip | |
* 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: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@9868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
| -rw-r--r-- | ruby.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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 */ |
