[#28230] bcc32 memory manager — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

15 messages 2006/01/18

[#28243] FUNCTION_CALL_MAY_RETURN_TWICE — Hajimu UMEMOTO <ume@...>

梅本です。

18 messages 2006/01/20

[#28270] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2006/01/23
[#28271] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/23

山本です。

[#28272] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — WATANABE Hirofumi <eban@...> 2006/01/23

わたなべです。

[#28273] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/23

山本です。

[#28274] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/24

山本です。

[#28275] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "U.Nakamura" <usa@...> 2006/01/24

こんにちは、なかむら(う)です。

[#28286] SEGV with zlib — Tanaka Akira <akr@...17n.org>

最近、Data オブジェクトの free 関数が気になっているのですが、

24 messages 2006/01/30
[#28303] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28304] Re: SEGV with zlib — Yukihiro Matsumoto <matz@...> 2006/02/06

まつもと ゆきひろです

[#28305] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28306] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28307] Re: SEGV with zlib — Tietew <tietew-ml-ruby-dev@...> 2006/02/06

[#28308] Re: SEGV with zlib — Yukihiro Matsumoto <matz@...> 2006/02/06

まつもとゆきひろです。

[ruby-dev:28288] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2006-01-31 11:44:18 UTC
List: ruby-dev #28288
山本です。

待ちくたびれたので、特に反対がなければこれをコミットしようと思います。

setenv と unsetenv がない環境では、set_arg0 で environ を
使うコードを残すようにしました。これなら何かあっても元に戻しやすいでしょうし。

# setenv に 2引数の時代があったという裏付けを取ろうと
# google で大分調べたのですが、見つかりませんでした。
# 他のプログラムの configure でも単に HAVE_SETENV となってる
# ものばかりなので、unsetenv 同様の調べかたでいいのかもしれません。

Index: configure.in
===================================================================
RCS file: /src/ruby/configure.in,v
retrieving revision 1.297
diff -u -w -b -p -r1.297 configure.in
--- configure.in	25 Jan 2006 13:29:44 -0000	1.297
+++ configure.in	31 Jan 2006 11:12:18 -0000
@@ -506,7 +506,7 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid
 	      getpriority getrlimit setrlimit\
 	      dlopen sigprocmask sigaction _setjmp vsnprintf snprintf\
 	      setsid telldir seekdir fchmod mktime timegm cosh sinh tanh\
-	      setuid setgid daemon select_large_fdset)
+	      setuid setgid daemon select_large_fdset unsetenv)
 AC_ARG_ENABLE(setreuid,
        [  --enable-setreuid       use setreuid()/setregid() according to need even if obsolete.],
        [use_setreuid=$enableval])
@@ -514,6 +514,20 @@ if test "$use_setreuid" = yes; then
     AC_DEFINE(USE_SETREUID)
     AC_DEFINE(USE_SETREGID)
 fi
+AC_CACHE_CHECK(for setenv (2 arguments), rb_cv_have_setenv_2args,
+  [AC_TRY_COMPILE([#include <stdlib.h>], [setenv("foo", "foo");],
+	rb_cv_have_setenv_2args=yes,
+	rb_cv_have_setenv_2args=no)])
+if test "$rb_cv_have_setenv_2args" = yes; then
+  AC_DEFINE(HAVE_SETENV_2ARGS)
+fi
+AC_CACHE_CHECK(for setenv (3 arguments), rb_cv_have_setenv_3args,
+  [AC_TRY_COMPILE([#include <stdlib.h>], [setenv("foo", "foo", 1);],
+	rb_cv_have_setenv_3args=yes,
+	rb_cv_have_setenv_3args=no)])
+if test "$rb_cv_have_setenv_3args" = yes; then
+  AC_DEFINE(HAVE_SETENV_3ARGS)
+fi
 AC_STRUCT_TIMEZONE
 AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
   [AC_TRY_COMPILE([#include <time.h>],
Index: hash.c
===================================================================
RCS file: /src/ruby/hash.c,v
retrieving revision 1.159
diff -u -w -b -p -r1.159 hash.c
--- hash.c	20 Oct 2005 02:56:22 -0000	1.159
+++ hash.c	31 Jan 2006 11:12:18 -0000
@@ -1690,7 +1690,14 @@ ruby_setenv(const char *name, const char
      *         RTL's environ global variable directly yet.
      */
     SetEnvironmentVariable(name,value);
-#elif defined __CYGWIN__
+#elif defined(HAVE_SETENV_2ARGS) && defined(HAVE_UNSETENV)
+#undef setenv
+#undef unsetenv
+    if (value)
+	setenv(name,value);
+    else
+	unsetenv(name);
+#elif defined(HAVE_SETENV_3ARGS) && defined(HAVE_UNSETENV)
 #undef setenv
 #undef unsetenv
     if (value)
Index: ruby.c
===================================================================
RCS file: /src/ruby/ruby.c,v
retrieving revision 1.112
diff -u -w -b -p -r1.112 ruby.c
--- ruby.c	12 Dec 2005 00:35:08 -0000	1.112
+++ ruby.c	31 Jan 2006 11:06:15 -0000
@@ -987,7 +987,15 @@ 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_2ARGS) && defined(HAVE_UNSETENV)
+#elif defined(HAVE_SETENV_3ARGS) && defined(HAVE_UNSETENV)
+#else
+#define USE_ENVSPACE_FOR_ARG0
+#endif
+
+#ifdef USE_ENVSPACE_FOR_ARG0
 static struct {
     char *begin, *end;
 } envspace;
@@ -1061,7 +1069,7 @@ set_arg0(VALUE val, ID id)
 		break;
 	    }
 	}
-#ifndef DOSISH
+#ifdef USE_ENVSPACE_FOR_ARG0
 	if (s + 1 == envspace.begin) {
 	    s = envspace.end;
 	    ruby_setenv("", NULL); /* duplicate environ vars */


In This Thread