[#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:28270] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2006-01-23 09:04:02 UTC
List: ruby-dev #28270
山本です。

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/7138 に Solaris 10 で
environ の置き換えを行わないパッチが出ているのですが、http://www.unix.org/single_unix_specification/
で見る限り Solaris 10 以外でも environ を置き換えた場合の挙動は保証しないという
ことのようです。

cygwin と soraris でだけ置き換えをしないよりも、置き換えの必要な環境でだけ置き換えたほうが
いいような気がするのですが、いかがですか?

念のため、導入の経緯などを調べてみました。

  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/2257
  rbgw で setenv(3) がバグっているため、回避するために自前の setenv を
  実装。rbgw って?MingW の前身でしょうか。いずれにせよ、Windows 固有の
  問題のように見えました。

  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/10885
  setenv(3) は古い環境では引数が二個、新しい環境では三個で、数がそろって
  いない。

setenv の引数の数は、こんな感じで回避できないでしょうか。見よう見真似で
パッチにしてみました。

Index: configure.in
===================================================================
RCS file: /src/ruby/configure.in,v
retrieving revision 1.212.2.40
diff -u -w -b -p -r1.212.2.40 configure.in
--- configure.in	24 Nov 2005 12:07:18 -0000	1.212.2.40
+++ configure.in	23 Jan 2006 08:53:17 -0000
@@ -398,6 +398,10 @@ bow)		ac_cv_func_setitimer=no
 		;;
 superux*)     ac_cv_func_setitimer=no
               ;;
+solaris*2.10)  ac_cv_func_isinf=yes
+               LIBS="-lm $LIBS"
+              ;;
+
 *) LIBS="-lm $LIBS";;
 esac
 AC_CHECK_LIB(crypt, crypt)
@@ -444,7 +448,7 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid
 	      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 unsetenv)
 AC_ARG_ENABLE(setreuid,
        [  --enable-setreuid       use setreuid()/setregid() according to need even if obsolete.],
        [use_setreuid=$enableval])
@@ -452,6 +456,20 @@ if test "$use_setreuid" = yes; then
     AC_DEFINE(USE_SETREUID)
     AC_DEFINE(USE_SETREGID)
 fi
+AC_CACHE_CHECK(for 2 arguments setenv, rb_cv_have_2_arg_setenv,
+  [AC_TRY_COMPILE([#include <stdlib.h>], [setenv("foo", "foo");],
+	rb_cv_have_2_arg_setenv=yes,
+	rb_cv_have_2_arg_setenv=no)])
+if test "$rb_cv_have_2_arg_setenv" = yes; then
+  AC_DEFINE(HAVE_2_ARG_SETENV)
+fi
+AC_CACHE_CHECK(for 3 arguments setenv, rb_cv_have_3_arg_setenv,
+  [AC_TRY_COMPILE([#include <stdlib.h>], [setenv("foo", "foo", 1);],
+	rb_cv_have_3_arg_setenv=yes,
+	rb_cv_have_3_arg_setenv=no)])
+if test "$rb_cv_have_3_arg_setenv" = yes; then
+  AC_DEFINE(HAVE_3_ARG_SETENV)
+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.128.2.14
diff -u -w -b -p -r1.128.2.14 hash.c
--- hash.c	19 Jul 2005 08:25:37 -0000	1.128.2.14
+++ hash.c	23 Jan 2006 08:37:27 -0000
@@ -1812,7 +1812,14 @@ ruby_setenv(name, value)
      *         RTL's environ global variable directly yet.
      */
     SetEnvironmentVariable(name,value);
-#elif defined __CYGWIN__
+#elif defined HAVE_2_ARG_SETENV && defined HAVE_UNSETENV
+#undef setenv
+#undef unsetenv
+    if (value)
+	setenv(name,value);
+    else
+	unsetenv(name);
+#elif defined HAVE_3_ARG_SETENV && defined HAVE_UNSETENV
 #undef setenv
 #undef unsetenv
     if (value)


In This Thread

Prev Next